Security hardening release addressing CodeQL and Dependabot alerts: - Fix stack trace exposure in error responses - Add SSRF protection with DNS resolution checking - Implement proper URL hostname validation (replaces substring matching) - Add centralized path sanitization to prevent path traversal - Fix ReDoS vulnerability in email validation regex - Improve HTML sanitization in validation utilities - Fix capability wildcard matching in auth utilities - Update glob dependency to address CVE - Add CodeQL suppression comments for verified false positives 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2963 lines
76 KiB
SQL
2963 lines
76 KiB
SQL
--
|
|
-- PostgreSQL database dump
|
|
--
|
|
|
|
-- Dumped from database version 15.14
|
|
-- Dumped by pg_dump version 15.14
|
|
|
|
SET statement_timeout = 0;
|
|
SET lock_timeout = 0;
|
|
SET idle_in_transaction_session_timeout = 0;
|
|
SET client_encoding = 'UTF8';
|
|
SET standard_conforming_strings = on;
|
|
SELECT pg_catalog.set_config('search_path', '', false);
|
|
SET check_function_bodies = false;
|
|
SET xmloption = content;
|
|
SET client_min_messages = warning;
|
|
SET row_security = off;
|
|
|
|
--
|
|
-- Name: admin_control; Type: SCHEMA; Schema: -; Owner: -
|
|
--
|
|
|
|
CREATE SCHEMA admin_control;
|
|
|
|
|
|
--
|
|
-- Name: SCHEMA admin_control; Type: COMMENT; Schema: -; Owner: -
|
|
--
|
|
|
|
COMMENT ON SCHEMA admin_control IS 'GT 2.0 Admin Control Panel Schema with HA Support';
|
|
|
|
|
|
--
|
|
-- Name: pg_buffercache; Type: EXTENSION; Schema: -; Owner: -
|
|
--
|
|
|
|
CREATE EXTENSION IF NOT EXISTS pg_buffercache WITH SCHEMA public;
|
|
|
|
|
|
--
|
|
-- Name: EXTENSION pg_buffercache; Type: COMMENT; Schema: -; Owner: -
|
|
--
|
|
|
|
COMMENT ON EXTENSION pg_buffercache IS 'examine the shared buffer cache';
|
|
|
|
|
|
--
|
|
-- Name: pg_stat_statements; Type: EXTENSION; Schema: -; Owner: -
|
|
--
|
|
|
|
CREATE EXTENSION IF NOT EXISTS pg_stat_statements WITH SCHEMA public;
|
|
|
|
|
|
--
|
|
-- Name: EXTENSION pg_stat_statements; Type: COMMENT; Schema: -; Owner: -
|
|
--
|
|
|
|
COMMENT ON EXTENSION pg_stat_statements IS 'track planning and execution statistics of all SQL statements executed';
|
|
|
|
|
|
--
|
|
-- Name: uuid-ossp; Type: EXTENSION; Schema: -; Owner: -
|
|
--
|
|
|
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA public;
|
|
|
|
|
|
--
|
|
-- Name: EXTENSION "uuid-ossp"; Type: COMMENT; Schema: -; Owner: -
|
|
--
|
|
|
|
COMMENT ON EXTENSION "uuid-ossp" IS 'generate universally unique identifiers (UUIDs)';
|
|
|
|
|
|
SET default_tablespace = '';
|
|
|
|
SET default_table_access_method = heap;
|
|
|
|
--
|
|
-- Name: api_keys; Type: TABLE; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE TABLE admin_control.api_keys (
|
|
id uuid DEFAULT public.uuid_generate_v4() NOT NULL,
|
|
key_name character varying(255) NOT NULL,
|
|
provider character varying(100) NOT NULL,
|
|
encrypted_key text NOT NULL,
|
|
key_hash character varying(255) NOT NULL,
|
|
scopes jsonb DEFAULT '[]'::jsonb,
|
|
usage_limits jsonb DEFAULT '{}'::jsonb,
|
|
status character varying(50) DEFAULT 'active'::character varying,
|
|
expires_at timestamp with time zone,
|
|
created_at timestamp with time zone DEFAULT now(),
|
|
updated_at timestamp with time zone DEFAULT now()
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: model_registry; Type: TABLE; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE TABLE admin_control.model_registry (
|
|
id uuid DEFAULT public.uuid_generate_v4() NOT NULL,
|
|
name character varying(255) NOT NULL,
|
|
provider character varying(100) NOT NULL,
|
|
model_id character varying(255) NOT NULL,
|
|
configuration jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
pricing jsonb DEFAULT '{}'::jsonb,
|
|
capabilities jsonb DEFAULT '{}'::jsonb,
|
|
status character varying(50) DEFAULT 'active'::character varying,
|
|
created_at timestamp with time zone DEFAULT now(),
|
|
updated_at timestamp with time zone DEFAULT now()
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: system_config; Type: TABLE; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE TABLE admin_control.system_config (
|
|
id uuid DEFAULT public.uuid_generate_v4() NOT NULL,
|
|
config_key character varying(255) NOT NULL,
|
|
config_value jsonb NOT NULL,
|
|
description text,
|
|
created_at timestamp with time zone DEFAULT now(),
|
|
updated_at timestamp with time zone DEFAULT now()
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: system_metrics; Type: TABLE; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE TABLE admin_control.system_metrics (
|
|
id uuid DEFAULT public.uuid_generate_v4() NOT NULL,
|
|
metric_name character varying(255) NOT NULL,
|
|
metric_value numeric NOT NULL,
|
|
metric_unit character varying(50),
|
|
tags jsonb DEFAULT '{}'::jsonb,
|
|
"timestamp" timestamp with time zone DEFAULT now(),
|
|
tenant_id uuid
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: tenants; Type: TABLE; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE TABLE admin_control.tenants (
|
|
id uuid DEFAULT public.uuid_generate_v4() NOT NULL,
|
|
domain character varying(255) NOT NULL,
|
|
name character varying(255) NOT NULL,
|
|
status character varying(50) DEFAULT 'active'::character varying,
|
|
configuration jsonb DEFAULT '{}'::jsonb,
|
|
resource_limits jsonb DEFAULT '{}'::jsonb,
|
|
created_at timestamp with time zone DEFAULT now(),
|
|
updated_at timestamp with time zone DEFAULT now()
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: ai_resources; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.ai_resources (
|
|
id integer NOT NULL,
|
|
uuid character varying(36) NOT NULL,
|
|
name character varying(100) NOT NULL,
|
|
description text,
|
|
resource_type character varying(50) NOT NULL,
|
|
provider character varying(50) NOT NULL,
|
|
model_name character varying(100),
|
|
resource_subtype character varying(50),
|
|
personalization_mode character varying(20) NOT NULL,
|
|
api_endpoints json NOT NULL,
|
|
primary_endpoint text,
|
|
api_key_encrypted text,
|
|
failover_endpoints json NOT NULL,
|
|
health_check_url text,
|
|
iframe_url text,
|
|
sandbox_config json NOT NULL,
|
|
auth_config json NOT NULL,
|
|
max_requests_per_minute integer NOT NULL,
|
|
max_tokens_per_request integer NOT NULL,
|
|
cost_per_1k_tokens double precision NOT NULL,
|
|
latency_sla_ms integer NOT NULL,
|
|
configuration json NOT NULL,
|
|
health_status character varying(20) NOT NULL,
|
|
last_health_check timestamp with time zone,
|
|
is_active boolean NOT NULL,
|
|
priority integer NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
updated_at timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: ai_resources_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.ai_resources_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: ai_resources_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.ai_resources_id_seq OWNED BY public.ai_resources.id;
|
|
|
|
|
|
--
|
|
-- Name: audit_logs; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.audit_logs (
|
|
id integer NOT NULL,
|
|
user_id integer,
|
|
tenant_id integer,
|
|
action character varying(100) NOT NULL,
|
|
resource_type character varying(50),
|
|
resource_id character varying(100),
|
|
details json NOT NULL,
|
|
ip_address character varying(45),
|
|
user_agent text,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: audit_logs_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.audit_logs_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: audit_logs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.audit_logs_id_seq OWNED BY public.audit_logs.id;
|
|
|
|
|
|
--
|
|
-- Name: billing_plans; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.billing_plans (
|
|
id integer NOT NULL,
|
|
name character varying(100) NOT NULL,
|
|
display_name character varying(200),
|
|
description character varying(500),
|
|
base_price_cents integer,
|
|
compute_price_per_hour_cents integer,
|
|
storage_price_per_gb_month_cents integer,
|
|
api_price_per_1k_calls_cents integer,
|
|
transfer_price_per_gb_cents integer,
|
|
included_compute_hours integer,
|
|
included_storage_gb integer,
|
|
included_api_calls integer,
|
|
included_transfer_gb integer,
|
|
max_users integer,
|
|
max_resources integer,
|
|
max_storage_gb integer,
|
|
features json,
|
|
is_active boolean,
|
|
created_at timestamp with time zone DEFAULT now(),
|
|
updated_at timestamp with time zone
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: billing_plans_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.billing_plans_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: billing_plans_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.billing_plans_id_seq OWNED BY public.billing_plans.id;
|
|
|
|
|
|
--
|
|
-- Name: billing_usage; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.billing_usage (
|
|
id integer NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
billing_date timestamp with time zone NOT NULL,
|
|
billing_period character varying(20),
|
|
total_cost_cents integer,
|
|
compute_cost_cents integer,
|
|
storage_cost_cents integer,
|
|
api_cost_cents integer,
|
|
transfer_cost_cents integer,
|
|
compute_hours numeric(10,2),
|
|
storage_gb_hours numeric(10,2),
|
|
api_calls integer,
|
|
data_transfer_gb numeric(10,2),
|
|
resource_usage json,
|
|
status character varying(20),
|
|
invoice_id character varying(100),
|
|
created_at timestamp with time zone DEFAULT now(),
|
|
updated_at timestamp with time zone
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: billing_usage_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.billing_usage_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: billing_usage_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.billing_usage_id_seq OWNED BY public.billing_usage.id;
|
|
|
|
|
|
--
|
|
-- Name: license_billing_usage; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.license_billing_usage (
|
|
id integer NOT NULL,
|
|
license_id integer NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
billing_period_start timestamp with time zone NOT NULL,
|
|
billing_period_end timestamp with time zone NOT NULL,
|
|
active_users integer,
|
|
active_resources integer,
|
|
resource_usage json,
|
|
total_api_calls integer,
|
|
total_tokens_used integer,
|
|
total_storage_gb numeric(10,2),
|
|
base_cost numeric(10,2),
|
|
resource_cost numeric(10,2),
|
|
total_cost numeric(10,2),
|
|
invoice_status character varying(20),
|
|
invoice_number character varying(50),
|
|
payment_date timestamp with time zone,
|
|
calculated_at timestamp with time zone DEFAULT now(),
|
|
created_at timestamp with time zone DEFAULT now()
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: license_billing_usage_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.license_billing_usage_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: license_billing_usage_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.license_billing_usage_id_seq OWNED BY public.license_billing_usage.id;
|
|
|
|
|
|
--
|
|
-- Name: license_seats; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.license_seats (
|
|
id integer NOT NULL,
|
|
license_id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
seat_type character varying(50),
|
|
is_active boolean,
|
|
resource_overrides json,
|
|
assigned_at timestamp with time zone DEFAULT now(),
|
|
last_accessed timestamp with time zone,
|
|
expires_at timestamp with time zone,
|
|
CONSTRAINT check_seat_active_bool CHECK ((is_active = ANY (ARRAY[true, false])))
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: license_seats_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.license_seats_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: license_seats_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.license_seats_id_seq OWNED BY public.license_seats.id;
|
|
|
|
|
|
--
|
|
-- Name: licenses; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.licenses (
|
|
id integer NOT NULL,
|
|
license_uuid character varying(36) NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
license_key character varying(100) NOT NULL,
|
|
license_type character varying(50) NOT NULL,
|
|
max_seats integer NOT NULL,
|
|
used_seats integer NOT NULL,
|
|
allowed_resources json NOT NULL,
|
|
resource_limits json NOT NULL,
|
|
feature_flags json NOT NULL,
|
|
billing_status character varying(20) NOT NULL,
|
|
billing_cycle character varying(20) NOT NULL,
|
|
price_per_seat numeric(10,2) NOT NULL,
|
|
resource_multiplier numeric(5,2) NOT NULL,
|
|
grace_period_days integer,
|
|
enforcement_mode character varying(20),
|
|
suspension_reason character varying(255),
|
|
valid_from timestamp with time zone DEFAULT now() NOT NULL,
|
|
valid_until timestamp with time zone NOT NULL,
|
|
last_validated timestamp with time zone,
|
|
grace_period_ends timestamp with time zone,
|
|
created_at timestamp with time zone DEFAULT now(),
|
|
updated_at timestamp with time zone,
|
|
created_by character varying(255),
|
|
last_modified_by character varying(255),
|
|
CONSTRAINT check_positive_multiplier CHECK ((resource_multiplier > (0)::numeric)),
|
|
CONSTRAINT check_positive_price CHECK ((price_per_seat >= (0)::numeric)),
|
|
CONSTRAINT check_positive_seats CHECK ((used_seats >= 0)),
|
|
CONSTRAINT check_seat_limit CHECK ((used_seats <= max_seats))
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: licenses_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.licenses_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: licenses_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.licenses_id_seq OWNED BY public.licenses.id;
|
|
|
|
|
|
--
|
|
-- Name: model_configs; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.model_configs (
|
|
model_id character varying(255) NOT NULL,
|
|
name character varying(255) NOT NULL,
|
|
version character varying(50),
|
|
provider character varying(50) NOT NULL,
|
|
model_type character varying(50) NOT NULL,
|
|
endpoint character varying(500) NOT NULL,
|
|
api_key_name character varying(100),
|
|
context_window integer,
|
|
max_tokens integer,
|
|
dimensions integer,
|
|
capabilities json,
|
|
cost_per_million_input double precision,
|
|
cost_per_million_output double precision,
|
|
description text,
|
|
config json,
|
|
is_active boolean,
|
|
is_compound boolean DEFAULT false,
|
|
health_status character varying(20),
|
|
last_health_check timestamp without time zone,
|
|
request_count integer,
|
|
error_count integer,
|
|
success_rate double precision,
|
|
avg_latency_ms double precision,
|
|
tenant_restrictions json,
|
|
required_capabilities json,
|
|
created_at timestamp without time zone,
|
|
updated_at timestamp without time zone
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: model_usage_logs; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.model_usage_logs (
|
|
id integer NOT NULL,
|
|
model_id character varying(255) NOT NULL,
|
|
tenant_id character varying(100) NOT NULL,
|
|
user_id character varying(100) NOT NULL,
|
|
tokens_input integer,
|
|
tokens_output integer,
|
|
tokens_total integer,
|
|
cost double precision,
|
|
latency_ms double precision,
|
|
success boolean,
|
|
error_message text,
|
|
request_id character varying(100),
|
|
"timestamp" timestamp without time zone
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: model_usage_logs_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.model_usage_logs_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: model_usage_logs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.model_usage_logs_id_seq OWNED BY public.model_usage_logs.id;
|
|
|
|
|
|
--
|
|
-- Name: password_reset_rate_limits; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.password_reset_rate_limits (
|
|
id integer NOT NULL,
|
|
email character varying(255) NOT NULL,
|
|
request_count integer DEFAULT 1 NOT NULL,
|
|
window_start timestamp with time zone NOT NULL,
|
|
window_end timestamp with time zone NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: password_reset_rate_limits_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.password_reset_rate_limits_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: password_reset_rate_limits_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.password_reset_rate_limits_id_seq OWNED BY public.password_reset_rate_limits.id;
|
|
|
|
|
|
--
|
|
-- Name: resource_alerts; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.resource_alerts (
|
|
id integer NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
resource_type character varying(50) NOT NULL,
|
|
alert_level character varying(20) NOT NULL,
|
|
message text NOT NULL,
|
|
current_usage double precision NOT NULL,
|
|
max_value double precision NOT NULL,
|
|
percentage_used double precision NOT NULL,
|
|
acknowledged boolean NOT NULL,
|
|
acknowledged_by character varying(100),
|
|
acknowledged_at timestamp without time zone,
|
|
created_at timestamp without time zone NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: resource_alerts_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.resource_alerts_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: resource_alerts_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.resource_alerts_id_seq OWNED BY public.resource_alerts.id;
|
|
|
|
|
|
--
|
|
-- Name: resource_pricing; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.resource_pricing (
|
|
id integer NOT NULL,
|
|
resource_id integer NOT NULL,
|
|
pricing_model character varying(50),
|
|
base_price numeric(10,4),
|
|
unit_type character varying(50),
|
|
tier_pricing json,
|
|
standard_multiplier numeric(5,2),
|
|
professional_multiplier numeric(5,2),
|
|
enterprise_multiplier numeric(5,2),
|
|
effective_from timestamp with time zone DEFAULT now(),
|
|
effective_until timestamp with time zone,
|
|
created_at timestamp with time zone DEFAULT now(),
|
|
updated_at timestamp with time zone
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: resource_pricing_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.resource_pricing_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: resource_pricing_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.resource_pricing_id_seq OWNED BY public.resource_pricing.id;
|
|
|
|
|
|
--
|
|
-- Name: resource_quotas; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.resource_quotas (
|
|
id integer NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
resource_type character varying(50) NOT NULL,
|
|
max_value double precision NOT NULL,
|
|
current_usage double precision NOT NULL,
|
|
warning_threshold double precision NOT NULL,
|
|
critical_threshold double precision NOT NULL,
|
|
unit character varying(20) NOT NULL,
|
|
cost_per_unit double precision NOT NULL,
|
|
is_active boolean NOT NULL,
|
|
created_at timestamp without time zone NOT NULL,
|
|
updated_at timestamp without time zone NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: resource_quotas_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.resource_quotas_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: resource_quotas_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.resource_quotas_id_seq OWNED BY public.resource_quotas.id;
|
|
|
|
|
|
--
|
|
-- Name: resource_templates; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.resource_templates (
|
|
id integer NOT NULL,
|
|
name character varying(50) NOT NULL,
|
|
display_name character varying(100) NOT NULL,
|
|
description text,
|
|
template_data text NOT NULL,
|
|
monthly_cost double precision NOT NULL,
|
|
is_active boolean NOT NULL,
|
|
created_at timestamp without time zone NOT NULL,
|
|
updated_at timestamp without time zone NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: resource_templates_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.resource_templates_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: resource_templates_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.resource_templates_id_seq OWNED BY public.resource_templates.id;
|
|
|
|
|
|
--
|
|
-- Name: resource_usage; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.resource_usage (
|
|
id integer NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
resource_type character varying(50) NOT NULL,
|
|
usage_amount double precision NOT NULL,
|
|
cost double precision NOT NULL,
|
|
"timestamp" timestamp without time zone NOT NULL,
|
|
usage_metadata text,
|
|
user_id character varying(100),
|
|
service character varying(50)
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: resource_usage_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.resource_usage_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: resource_usage_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.resource_usage_id_seq OWNED BY public.resource_usage.id;
|
|
|
|
|
|
--
|
|
-- Name: session_data; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.session_data (
|
|
id integer NOT NULL,
|
|
uuid character varying(36) NOT NULL,
|
|
user_id integer NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
resource_id integer NOT NULL,
|
|
session_id character varying(100) NOT NULL,
|
|
data_type character varying(50) NOT NULL,
|
|
data_content json NOT NULL,
|
|
expires_at timestamp with time zone NOT NULL,
|
|
auto_cleanup boolean NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
last_accessed timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: session_data_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.session_data_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: session_data_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.session_data_id_seq OWNED BY public.session_data.id;
|
|
|
|
|
|
--
|
|
-- Name: system_metrics; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.system_metrics (
|
|
id integer NOT NULL,
|
|
metric_name character varying(100) NOT NULL,
|
|
metric_value double precision NOT NULL,
|
|
metric_unit character varying(20) NOT NULL,
|
|
"timestamp" timestamp without time zone NOT NULL,
|
|
metric_metadata text
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: system_metrics_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.system_metrics_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: system_metrics_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.system_metrics_id_seq OWNED BY public.system_metrics.id;
|
|
|
|
|
|
--
|
|
-- Name: tenant_model_configs; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.tenant_model_configs (
|
|
id integer NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
model_id character varying(255) NOT NULL,
|
|
is_enabled boolean NOT NULL,
|
|
tenant_capabilities json,
|
|
rate_limits json,
|
|
usage_constraints json,
|
|
priority integer NOT NULL,
|
|
created_at timestamp without time zone NOT NULL,
|
|
updated_at timestamp without time zone NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: tenant_model_configs_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.tenant_model_configs_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: tenant_model_configs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.tenant_model_configs_id_seq OWNED BY public.tenant_model_configs.id;
|
|
|
|
|
|
--
|
|
-- Name: tenant_resources; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.tenant_resources (
|
|
id integer NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
resource_id integer NOT NULL,
|
|
usage_limits json NOT NULL,
|
|
is_enabled boolean NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: tenant_resources_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.tenant_resources_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: tenant_resources_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.tenant_resources_id_seq OWNED BY public.tenant_resources.id;
|
|
|
|
|
|
--
|
|
-- Name: tenant_templates; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.tenant_templates (
|
|
id integer NOT NULL,
|
|
name character varying(100) NOT NULL,
|
|
description text,
|
|
template_data jsonb NOT NULL,
|
|
is_default boolean DEFAULT false NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
updated_at timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: tenant_templates_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.tenant_templates_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: tenant_templates_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.tenant_templates_id_seq OWNED BY public.tenant_templates.id;
|
|
|
|
|
|
--
|
|
-- Name: tenants; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.tenants (
|
|
id integer NOT NULL,
|
|
uuid character varying(36) NOT NULL,
|
|
name character varying(100) NOT NULL,
|
|
domain character varying(50) NOT NULL,
|
|
template character varying(20) NOT NULL,
|
|
status character varying(20) NOT NULL,
|
|
max_users integer NOT NULL,
|
|
resource_limits json NOT NULL,
|
|
namespace character varying(100) NOT NULL,
|
|
subdomain character varying(50) NOT NULL,
|
|
database_path character varying(255),
|
|
encryption_key text,
|
|
api_keys json,
|
|
api_key_encryption_version character varying(20),
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
updated_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
deleted_at timestamp with time zone,
|
|
frontend_url character varying(255),
|
|
optics_enabled boolean DEFAULT false
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: tenants_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.tenants_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: tenants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.tenants_id_seq OWNED BY public.tenants.id;
|
|
|
|
|
|
--
|
|
-- Name: tfa_verification_rate_limits; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.tfa_verification_rate_limits (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
request_count integer DEFAULT 1 NOT NULL,
|
|
window_start timestamp with time zone NOT NULL,
|
|
window_end timestamp with time zone NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: tfa_verification_rate_limits_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.tfa_verification_rate_limits_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: tfa_verification_rate_limits_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.tfa_verification_rate_limits_id_seq OWNED BY public.tfa_verification_rate_limits.id;
|
|
|
|
|
|
--
|
|
-- Name: usage_records; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.usage_records (
|
|
id integer NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
resource_id integer NOT NULL,
|
|
user_email character varying(255) NOT NULL,
|
|
request_type character varying(50) NOT NULL,
|
|
tokens_used integer NOT NULL,
|
|
cost_cents integer NOT NULL,
|
|
request_metadata json NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: usage_records_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.usage_records_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: usage_records_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.usage_records_id_seq OWNED BY public.usage_records.id;
|
|
|
|
|
|
--
|
|
-- Name: used_temp_tokens; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.used_temp_tokens (
|
|
id integer NOT NULL,
|
|
token_id character varying(255) NOT NULL,
|
|
user_id integer NOT NULL,
|
|
used_at timestamp with time zone DEFAULT now(),
|
|
expires_at timestamp with time zone NOT NULL,
|
|
user_email character varying,
|
|
tfa_configured boolean,
|
|
qr_code_uri text,
|
|
manual_entry_key character varying,
|
|
created_at timestamp without time zone,
|
|
temp_token text
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: used_temp_tokens_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.used_temp_tokens_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: used_temp_tokens_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.used_temp_tokens_id_seq OWNED BY public.used_temp_tokens.id;
|
|
|
|
|
|
--
|
|
-- Name: user_preferences; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.user_preferences (
|
|
id integer NOT NULL,
|
|
uuid character varying(36) NOT NULL,
|
|
user_id integer NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
ui_preferences json NOT NULL,
|
|
ai_preferences json NOT NULL,
|
|
learning_preferences json NOT NULL,
|
|
privacy_preferences json NOT NULL,
|
|
notification_preferences json NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
updated_at timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: user_preferences_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.user_preferences_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: user_preferences_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.user_preferences_id_seq OWNED BY public.user_preferences.id;
|
|
|
|
|
|
--
|
|
-- Name: user_progress; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.user_progress (
|
|
id integer NOT NULL,
|
|
uuid character varying(36) NOT NULL,
|
|
user_id integer NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
resource_id integer NOT NULL,
|
|
skill_area character varying(50) NOT NULL,
|
|
current_level character varying(20) NOT NULL,
|
|
experience_points integer NOT NULL,
|
|
completion_percentage double precision NOT NULL,
|
|
total_sessions integer NOT NULL,
|
|
total_time_minutes integer NOT NULL,
|
|
success_rate double precision NOT NULL,
|
|
average_score double precision NOT NULL,
|
|
achievements json NOT NULL,
|
|
milestones json NOT NULL,
|
|
learning_analytics json NOT NULL,
|
|
difficulty_adjustments json NOT NULL,
|
|
strength_areas json NOT NULL,
|
|
improvement_areas json NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
updated_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
last_activity timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: user_progress_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.user_progress_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: user_progress_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.user_progress_id_seq OWNED BY public.user_progress.id;
|
|
|
|
|
|
--
|
|
-- Name: user_resource_data; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.user_resource_data (
|
|
id integer NOT NULL,
|
|
uuid character varying(36) NOT NULL,
|
|
user_id integer NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
resource_id integer NOT NULL,
|
|
data_type character varying(50) NOT NULL,
|
|
data_key character varying(100) NOT NULL,
|
|
data_value json NOT NULL,
|
|
is_encrypted boolean NOT NULL,
|
|
expiry_date timestamp with time zone,
|
|
version integer NOT NULL,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
updated_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
accessed_at timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: user_resource_data_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.user_resource_data_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: user_resource_data_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.user_resource_data_id_seq OWNED BY public.user_resource_data.id;
|
|
|
|
|
|
--
|
|
-- Name: user_tenant_assignments; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.user_tenant_assignments (
|
|
id integer NOT NULL,
|
|
user_id integer NOT NULL,
|
|
tenant_id integer NOT NULL,
|
|
tenant_user_role character varying(20) NOT NULL,
|
|
tenant_display_name character varying(100),
|
|
tenant_email character varying(255),
|
|
tenant_department character varying(100),
|
|
tenant_title character varying(100),
|
|
tenant_password_hash character varying(255),
|
|
requires_2fa boolean NOT NULL,
|
|
last_password_change timestamp with time zone,
|
|
tenant_capabilities json NOT NULL,
|
|
resource_limits json NOT NULL,
|
|
is_active boolean NOT NULL,
|
|
is_primary_tenant boolean NOT NULL,
|
|
joined_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
last_accessed timestamp with time zone,
|
|
last_login_at timestamp with time zone,
|
|
invited_by integer,
|
|
invitation_accepted_at timestamp with time zone,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
updated_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
deleted_at timestamp with time zone
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: user_tenant_assignments_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.user_tenant_assignments_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: user_tenant_assignments_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.user_tenant_assignments_id_seq OWNED BY public.user_tenant_assignments.id;
|
|
|
|
|
|
--
|
|
-- Name: users; Type: TABLE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE TABLE public.users (
|
|
id integer NOT NULL,
|
|
uuid character varying(36) NOT NULL,
|
|
email character varying(255) NOT NULL,
|
|
full_name character varying(100) NOT NULL,
|
|
hashed_password character varying(255) NOT NULL,
|
|
user_type character varying(20) NOT NULL,
|
|
tenant_id integer,
|
|
current_tenant_id integer,
|
|
capabilities json NOT NULL,
|
|
is_active boolean NOT NULL,
|
|
last_login timestamp with time zone,
|
|
last_login_at timestamp with time zone,
|
|
created_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
updated_at timestamp with time zone DEFAULT now() NOT NULL,
|
|
deleted_at timestamp with time zone,
|
|
tfa_enabled boolean DEFAULT false NOT NULL,
|
|
tfa_secret text,
|
|
tfa_required boolean DEFAULT false NOT NULL
|
|
);
|
|
|
|
|
|
--
|
|
-- Name: users_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE SEQUENCE public.users_id_seq
|
|
AS integer
|
|
START WITH 1
|
|
INCREMENT BY 1
|
|
NO MINVALUE
|
|
NO MAXVALUE
|
|
CACHE 1;
|
|
|
|
|
|
--
|
|
-- Name: users_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER SEQUENCE public.users_id_seq OWNED BY public.users.id;
|
|
|
|
|
|
--
|
|
-- Name: ai_resources id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.ai_resources ALTER COLUMN id SET DEFAULT nextval('public.ai_resources_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: audit_logs id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.audit_logs ALTER COLUMN id SET DEFAULT nextval('public.audit_logs_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: billing_plans id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.billing_plans ALTER COLUMN id SET DEFAULT nextval('public.billing_plans_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: billing_usage id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.billing_usage ALTER COLUMN id SET DEFAULT nextval('public.billing_usage_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: license_billing_usage id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.license_billing_usage ALTER COLUMN id SET DEFAULT nextval('public.license_billing_usage_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: license_seats id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.license_seats ALTER COLUMN id SET DEFAULT nextval('public.license_seats_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: licenses id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.licenses ALTER COLUMN id SET DEFAULT nextval('public.licenses_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: model_usage_logs id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.model_usage_logs ALTER COLUMN id SET DEFAULT nextval('public.model_usage_logs_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: password_reset_rate_limits id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.password_reset_rate_limits ALTER COLUMN id SET DEFAULT nextval('public.password_reset_rate_limits_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: resource_alerts id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_alerts ALTER COLUMN id SET DEFAULT nextval('public.resource_alerts_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: resource_pricing id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_pricing ALTER COLUMN id SET DEFAULT nextval('public.resource_pricing_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: resource_quotas id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_quotas ALTER COLUMN id SET DEFAULT nextval('public.resource_quotas_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: resource_templates id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_templates ALTER COLUMN id SET DEFAULT nextval('public.resource_templates_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: resource_usage id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_usage ALTER COLUMN id SET DEFAULT nextval('public.resource_usage_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: session_data id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.session_data ALTER COLUMN id SET DEFAULT nextval('public.session_data_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: system_metrics id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.system_metrics ALTER COLUMN id SET DEFAULT nextval('public.system_metrics_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: tenant_model_configs id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenant_model_configs ALTER COLUMN id SET DEFAULT nextval('public.tenant_model_configs_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: tenant_resources id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenant_resources ALTER COLUMN id SET DEFAULT nextval('public.tenant_resources_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: tenant_templates id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenant_templates ALTER COLUMN id SET DEFAULT nextval('public.tenant_templates_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: tenants id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenants ALTER COLUMN id SET DEFAULT nextval('public.tenants_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: tfa_verification_rate_limits id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tfa_verification_rate_limits ALTER COLUMN id SET DEFAULT nextval('public.tfa_verification_rate_limits_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: usage_records id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.usage_records ALTER COLUMN id SET DEFAULT nextval('public.usage_records_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: used_temp_tokens id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.used_temp_tokens ALTER COLUMN id SET DEFAULT nextval('public.used_temp_tokens_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: user_preferences id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_preferences ALTER COLUMN id SET DEFAULT nextval('public.user_preferences_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: user_progress id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_progress ALTER COLUMN id SET DEFAULT nextval('public.user_progress_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: user_resource_data id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_resource_data ALTER COLUMN id SET DEFAULT nextval('public.user_resource_data_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: user_tenant_assignments id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_tenant_assignments ALTER COLUMN id SET DEFAULT nextval('public.user_tenant_assignments_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: users id; Type: DEFAULT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.users ALTER COLUMN id SET DEFAULT nextval('public.users_id_seq'::regclass);
|
|
|
|
|
|
--
|
|
-- Name: api_keys api_keys_key_hash_key; Type: CONSTRAINT; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY admin_control.api_keys
|
|
ADD CONSTRAINT api_keys_key_hash_key UNIQUE (key_hash);
|
|
|
|
|
|
--
|
|
-- Name: api_keys api_keys_pkey; Type: CONSTRAINT; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY admin_control.api_keys
|
|
ADD CONSTRAINT api_keys_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: model_registry model_registry_pkey; Type: CONSTRAINT; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY admin_control.model_registry
|
|
ADD CONSTRAINT model_registry_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: model_registry model_registry_provider_model_id_key; Type: CONSTRAINT; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY admin_control.model_registry
|
|
ADD CONSTRAINT model_registry_provider_model_id_key UNIQUE (provider, model_id);
|
|
|
|
|
|
--
|
|
-- Name: system_config system_config_config_key_key; Type: CONSTRAINT; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY admin_control.system_config
|
|
ADD CONSTRAINT system_config_config_key_key UNIQUE (config_key);
|
|
|
|
|
|
--
|
|
-- Name: system_config system_config_pkey; Type: CONSTRAINT; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY admin_control.system_config
|
|
ADD CONSTRAINT system_config_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: system_metrics system_metrics_pkey; Type: CONSTRAINT; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY admin_control.system_metrics
|
|
ADD CONSTRAINT system_metrics_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: tenants tenants_domain_key; Type: CONSTRAINT; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY admin_control.tenants
|
|
ADD CONSTRAINT tenants_domain_key UNIQUE (domain);
|
|
|
|
|
|
--
|
|
-- Name: tenants tenants_pkey; Type: CONSTRAINT; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY admin_control.tenants
|
|
ADD CONSTRAINT tenants_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: ai_resources ai_resources_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.ai_resources
|
|
ADD CONSTRAINT ai_resources_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: ai_resources ai_resources_uuid_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.ai_resources
|
|
ADD CONSTRAINT ai_resources_uuid_key UNIQUE (uuid);
|
|
|
|
|
|
--
|
|
-- Name: audit_logs audit_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.audit_logs
|
|
ADD CONSTRAINT audit_logs_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: billing_plans billing_plans_name_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.billing_plans
|
|
ADD CONSTRAINT billing_plans_name_key UNIQUE (name);
|
|
|
|
|
|
--
|
|
-- Name: billing_plans billing_plans_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.billing_plans
|
|
ADD CONSTRAINT billing_plans_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: billing_usage billing_usage_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.billing_usage
|
|
ADD CONSTRAINT billing_usage_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: license_billing_usage license_billing_usage_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.license_billing_usage
|
|
ADD CONSTRAINT license_billing_usage_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: license_seats license_seats_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.license_seats
|
|
ADD CONSTRAINT license_seats_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: licenses licenses_license_key_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.licenses
|
|
ADD CONSTRAINT licenses_license_key_key UNIQUE (license_key);
|
|
|
|
|
|
--
|
|
-- Name: licenses licenses_license_uuid_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.licenses
|
|
ADD CONSTRAINT licenses_license_uuid_key UNIQUE (license_uuid);
|
|
|
|
|
|
--
|
|
-- Name: licenses licenses_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.licenses
|
|
ADD CONSTRAINT licenses_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: licenses licenses_tenant_id_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.licenses
|
|
ADD CONSTRAINT licenses_tenant_id_key UNIQUE (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: model_configs model_configs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.model_configs
|
|
ADD CONSTRAINT model_configs_pkey PRIMARY KEY (model_id);
|
|
|
|
|
|
--
|
|
-- Name: model_usage_logs model_usage_logs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.model_usage_logs
|
|
ADD CONSTRAINT model_usage_logs_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: password_reset_rate_limits password_reset_rate_limits_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.password_reset_rate_limits
|
|
ADD CONSTRAINT password_reset_rate_limits_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: resource_alerts resource_alerts_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_alerts
|
|
ADD CONSTRAINT resource_alerts_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: resource_pricing resource_pricing_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_pricing
|
|
ADD CONSTRAINT resource_pricing_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: resource_quotas resource_quotas_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_quotas
|
|
ADD CONSTRAINT resource_quotas_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: resource_templates resource_templates_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_templates
|
|
ADD CONSTRAINT resource_templates_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: resource_usage resource_usage_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_usage
|
|
ADD CONSTRAINT resource_usage_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: session_data session_data_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.session_data
|
|
ADD CONSTRAINT session_data_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: session_data session_data_uuid_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.session_data
|
|
ADD CONSTRAINT session_data_uuid_key UNIQUE (uuid);
|
|
|
|
|
|
--
|
|
-- Name: system_metrics system_metrics_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.system_metrics
|
|
ADD CONSTRAINT system_metrics_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: tenant_model_configs tenant_model_configs_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenant_model_configs
|
|
ADD CONSTRAINT tenant_model_configs_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: tenant_resources tenant_resources_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenant_resources
|
|
ADD CONSTRAINT tenant_resources_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: tenant_templates tenant_templates_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenant_templates
|
|
ADD CONSTRAINT tenant_templates_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: tenants tenants_namespace_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenants
|
|
ADD CONSTRAINT tenants_namespace_key UNIQUE (namespace);
|
|
|
|
|
|
--
|
|
-- Name: tenants tenants_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenants
|
|
ADD CONSTRAINT tenants_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: tenants tenants_subdomain_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenants
|
|
ADD CONSTRAINT tenants_subdomain_key UNIQUE (subdomain);
|
|
|
|
|
|
--
|
|
-- Name: tenants tenants_uuid_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenants
|
|
ADD CONSTRAINT tenants_uuid_key UNIQUE (uuid);
|
|
|
|
|
|
--
|
|
-- Name: tfa_verification_rate_limits tfa_verification_rate_limits_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tfa_verification_rate_limits
|
|
ADD CONSTRAINT tfa_verification_rate_limits_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: tenant_model_configs unique_tenant_model; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenant_model_configs
|
|
ADD CONSTRAINT unique_tenant_model UNIQUE (tenant_id, model_id);
|
|
|
|
|
|
--
|
|
-- Name: tenant_resources unique_tenant_resource; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenant_resources
|
|
ADD CONSTRAINT unique_tenant_resource UNIQUE (tenant_id, resource_id);
|
|
|
|
|
|
--
|
|
-- Name: user_tenant_assignments unique_user_tenant_assignment; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_tenant_assignments
|
|
ADD CONSTRAINT unique_user_tenant_assignment UNIQUE (user_id, tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: usage_records usage_records_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.usage_records
|
|
ADD CONSTRAINT usage_records_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: used_temp_tokens used_temp_tokens_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.used_temp_tokens
|
|
ADD CONSTRAINT used_temp_tokens_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: used_temp_tokens used_temp_tokens_token_id_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.used_temp_tokens
|
|
ADD CONSTRAINT used_temp_tokens_token_id_key UNIQUE (token_id);
|
|
|
|
|
|
--
|
|
-- Name: user_preferences user_preferences_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_preferences
|
|
ADD CONSTRAINT user_preferences_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: user_preferences user_preferences_uuid_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_preferences
|
|
ADD CONSTRAINT user_preferences_uuid_key UNIQUE (uuid);
|
|
|
|
|
|
--
|
|
-- Name: user_progress user_progress_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_progress
|
|
ADD CONSTRAINT user_progress_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: user_progress user_progress_uuid_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_progress
|
|
ADD CONSTRAINT user_progress_uuid_key UNIQUE (uuid);
|
|
|
|
|
|
--
|
|
-- Name: user_resource_data user_resource_data_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_resource_data
|
|
ADD CONSTRAINT user_resource_data_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: user_resource_data user_resource_data_uuid_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_resource_data
|
|
ADD CONSTRAINT user_resource_data_uuid_key UNIQUE (uuid);
|
|
|
|
|
|
--
|
|
-- Name: user_tenant_assignments user_tenant_assignments_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_tenant_assignments
|
|
ADD CONSTRAINT user_tenant_assignments_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: users users_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.users
|
|
ADD CONSTRAINT users_pkey PRIMARY KEY (id);
|
|
|
|
|
|
--
|
|
-- Name: users users_uuid_key; Type: CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.users
|
|
ADD CONSTRAINT users_uuid_key UNIQUE (uuid);
|
|
|
|
|
|
--
|
|
-- Name: idx_api_keys_provider; Type: INDEX; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE INDEX idx_api_keys_provider ON admin_control.api_keys USING btree (provider);
|
|
|
|
|
|
--
|
|
-- Name: idx_api_keys_status; Type: INDEX; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE INDEX idx_api_keys_status ON admin_control.api_keys USING btree (status);
|
|
|
|
|
|
--
|
|
-- Name: idx_model_registry_provider; Type: INDEX; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE INDEX idx_model_registry_provider ON admin_control.model_registry USING btree (provider);
|
|
|
|
|
|
--
|
|
-- Name: idx_model_registry_status; Type: INDEX; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE INDEX idx_model_registry_status ON admin_control.model_registry USING btree (status);
|
|
|
|
|
|
--
|
|
-- Name: idx_system_config_key; Type: INDEX; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE INDEX idx_system_config_key ON admin_control.system_config USING btree (config_key);
|
|
|
|
|
|
--
|
|
-- Name: idx_system_metrics_name_timestamp; Type: INDEX; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE INDEX idx_system_metrics_name_timestamp ON admin_control.system_metrics USING btree (metric_name, "timestamp" DESC);
|
|
|
|
|
|
--
|
|
-- Name: idx_system_metrics_tenant_timestamp; Type: INDEX; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE INDEX idx_system_metrics_tenant_timestamp ON admin_control.system_metrics USING btree (tenant_id, "timestamp" DESC);
|
|
|
|
|
|
--
|
|
-- Name: idx_tenants_domain; Type: INDEX; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE INDEX idx_tenants_domain ON admin_control.tenants USING btree (domain);
|
|
|
|
|
|
--
|
|
-- Name: idx_tenants_status; Type: INDEX; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
CREATE INDEX idx_tenants_status ON admin_control.tenants USING btree (status);
|
|
|
|
|
|
--
|
|
-- Name: ix_ai_resources_health_status; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_ai_resources_health_status ON public.ai_resources USING btree (health_status);
|
|
|
|
|
|
--
|
|
-- Name: ix_ai_resources_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_ai_resources_id ON public.ai_resources USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_ai_resources_is_active; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_ai_resources_is_active ON public.ai_resources USING btree (is_active);
|
|
|
|
|
|
--
|
|
-- Name: ix_ai_resources_personalization_mode; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_ai_resources_personalization_mode ON public.ai_resources USING btree (personalization_mode);
|
|
|
|
|
|
--
|
|
-- Name: ix_ai_resources_provider; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_ai_resources_provider ON public.ai_resources USING btree (provider);
|
|
|
|
|
|
--
|
|
-- Name: ix_ai_resources_resource_subtype; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_ai_resources_resource_subtype ON public.ai_resources USING btree (resource_subtype);
|
|
|
|
|
|
--
|
|
-- Name: ix_ai_resources_resource_type; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_ai_resources_resource_type ON public.ai_resources USING btree (resource_type);
|
|
|
|
|
|
--
|
|
-- Name: ix_audit_logs_action; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_audit_logs_action ON public.audit_logs USING btree (action);
|
|
|
|
|
|
--
|
|
-- Name: ix_audit_logs_created_at; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_audit_logs_created_at ON public.audit_logs USING btree (created_at);
|
|
|
|
|
|
--
|
|
-- Name: ix_audit_logs_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_audit_logs_id ON public.audit_logs USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_audit_logs_resource_type; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_audit_logs_resource_type ON public.audit_logs USING btree (resource_type);
|
|
|
|
|
|
--
|
|
-- Name: ix_audit_logs_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_audit_logs_tenant_id ON public.audit_logs USING btree (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_audit_logs_user_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_audit_logs_user_id ON public.audit_logs USING btree (user_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_billing_plans_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_billing_plans_id ON public.billing_plans USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_billing_usage_billing_date; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_billing_usage_billing_date ON public.billing_usage USING btree (billing_date);
|
|
|
|
|
|
--
|
|
-- Name: ix_billing_usage_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_billing_usage_id ON public.billing_usage USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_billing_usage_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_billing_usage_tenant_id ON public.billing_usage USING btree (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_license_billing_usage_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_license_billing_usage_id ON public.license_billing_usage USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_license_seats_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_license_seats_id ON public.license_seats USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_licenses_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_licenses_id ON public.licenses USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_model_usage_logs_model_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_model_usage_logs_model_id ON public.model_usage_logs USING btree (model_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_model_usage_logs_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_model_usage_logs_tenant_id ON public.model_usage_logs USING btree (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_password_reset_rate_limits_email; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_password_reset_rate_limits_email ON public.password_reset_rate_limits USING btree (email);
|
|
|
|
|
|
--
|
|
-- Name: ix_password_reset_rate_limits_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_password_reset_rate_limits_id ON public.password_reset_rate_limits USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_password_reset_rate_limits_window_end; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_password_reset_rate_limits_window_end ON public.password_reset_rate_limits USING btree (window_end);
|
|
|
|
|
|
--
|
|
-- Name: ix_resource_alerts_alert_level; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_resource_alerts_alert_level ON public.resource_alerts USING btree (alert_level);
|
|
|
|
|
|
--
|
|
-- Name: ix_resource_alerts_created_at; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_resource_alerts_created_at ON public.resource_alerts USING btree (created_at);
|
|
|
|
|
|
--
|
|
-- Name: ix_resource_alerts_resource_type; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_resource_alerts_resource_type ON public.resource_alerts USING btree (resource_type);
|
|
|
|
|
|
--
|
|
-- Name: ix_resource_alerts_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_resource_alerts_tenant_id ON public.resource_alerts USING btree (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_resource_pricing_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_resource_pricing_id ON public.resource_pricing USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_resource_quotas_resource_type; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_resource_quotas_resource_type ON public.resource_quotas USING btree (resource_type);
|
|
|
|
|
|
--
|
|
-- Name: ix_resource_quotas_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_resource_quotas_tenant_id ON public.resource_quotas USING btree (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_resource_templates_name; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE UNIQUE INDEX ix_resource_templates_name ON public.resource_templates USING btree (name);
|
|
|
|
|
|
--
|
|
-- Name: ix_resource_usage_resource_type; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_resource_usage_resource_type ON public.resource_usage USING btree (resource_type);
|
|
|
|
|
|
--
|
|
-- Name: ix_resource_usage_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_resource_usage_tenant_id ON public.resource_usage USING btree (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_resource_usage_timestamp; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_resource_usage_timestamp ON public.resource_usage USING btree ("timestamp");
|
|
|
|
|
|
--
|
|
-- Name: ix_session_data_data_type; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_session_data_data_type ON public.session_data USING btree (data_type);
|
|
|
|
|
|
--
|
|
-- Name: ix_session_data_expires_at; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_session_data_expires_at ON public.session_data USING btree (expires_at);
|
|
|
|
|
|
--
|
|
-- Name: ix_session_data_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_session_data_id ON public.session_data USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_session_data_resource_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_session_data_resource_id ON public.session_data USING btree (resource_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_session_data_session_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_session_data_session_id ON public.session_data USING btree (session_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_session_data_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_session_data_tenant_id ON public.session_data USING btree (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_session_data_user_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_session_data_user_id ON public.session_data USING btree (user_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_system_metrics_metric_name; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_system_metrics_metric_name ON public.system_metrics USING btree (metric_name);
|
|
|
|
|
|
--
|
|
-- Name: ix_system_metrics_timestamp; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_system_metrics_timestamp ON public.system_metrics USING btree ("timestamp");
|
|
|
|
|
|
--
|
|
-- Name: ix_tenant_model_configs_model_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_tenant_model_configs_model_id ON public.tenant_model_configs USING btree (model_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_tenant_model_configs_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_tenant_model_configs_tenant_id ON public.tenant_model_configs USING btree (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_tenant_resources_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_tenant_resources_id ON public.tenant_resources USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_tenant_templates_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_tenant_templates_id ON public.tenant_templates USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_tenant_templates_name; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_tenant_templates_name ON public.tenant_templates USING btree (name);
|
|
|
|
|
|
--
|
|
-- Name: ix_tenants_domain; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE UNIQUE INDEX ix_tenants_domain ON public.tenants USING btree (domain);
|
|
|
|
|
|
--
|
|
-- Name: ix_tenants_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_tenants_id ON public.tenants USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_tenants_status; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_tenants_status ON public.tenants USING btree (status);
|
|
|
|
|
|
--
|
|
-- Name: ix_tfa_verification_rate_limits_user_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_tfa_verification_rate_limits_user_id ON public.tfa_verification_rate_limits USING btree (user_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_tfa_verification_rate_limits_window_end; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_tfa_verification_rate_limits_window_end ON public.tfa_verification_rate_limits USING btree (window_end);
|
|
|
|
|
|
--
|
|
-- Name: ix_usage_records_created_at; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_usage_records_created_at ON public.usage_records USING btree (created_at);
|
|
|
|
|
|
--
|
|
-- Name: ix_usage_records_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_usage_records_id ON public.usage_records USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_usage_records_request_type; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_usage_records_request_type ON public.usage_records USING btree (request_type);
|
|
|
|
|
|
--
|
|
-- Name: ix_usage_records_resource_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_usage_records_resource_id ON public.usage_records USING btree (resource_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_usage_records_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_usage_records_tenant_id ON public.usage_records USING btree (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_usage_records_user_email; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_usage_records_user_email ON public.usage_records USING btree (user_email);
|
|
|
|
|
|
--
|
|
-- Name: ix_used_temp_tokens_expires_at; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_used_temp_tokens_expires_at ON public.used_temp_tokens USING btree (expires_at);
|
|
|
|
|
|
--
|
|
-- Name: ix_used_temp_tokens_token_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE UNIQUE INDEX ix_used_temp_tokens_token_id ON public.used_temp_tokens USING btree (token_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_preferences_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_preferences_id ON public.user_preferences USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_preferences_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_preferences_tenant_id ON public.user_preferences USING btree (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_preferences_user_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_preferences_user_id ON public.user_preferences USING btree (user_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_progress_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_progress_id ON public.user_progress USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_progress_resource_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_progress_resource_id ON public.user_progress USING btree (resource_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_progress_skill_area; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_progress_skill_area ON public.user_progress USING btree (skill_area);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_progress_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_progress_tenant_id ON public.user_progress USING btree (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_progress_user_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_progress_user_id ON public.user_progress USING btree (user_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_resource_data_data_key; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_resource_data_data_key ON public.user_resource_data USING btree (data_key);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_resource_data_data_type; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_resource_data_data_type ON public.user_resource_data USING btree (data_type);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_resource_data_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_resource_data_id ON public.user_resource_data USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_resource_data_resource_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_resource_data_resource_id ON public.user_resource_data USING btree (resource_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_resource_data_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_resource_data_tenant_id ON public.user_resource_data USING btree (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_resource_data_user_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_resource_data_user_id ON public.user_resource_data USING btree (user_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_tenant_assignments_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_tenant_assignments_id ON public.user_tenant_assignments USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_tenant_assignments_tenant_email; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_tenant_assignments_tenant_email ON public.user_tenant_assignments USING btree (tenant_email);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_tenant_assignments_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_tenant_assignments_tenant_id ON public.user_tenant_assignments USING btree (tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_user_tenant_assignments_user_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_user_tenant_assignments_user_id ON public.user_tenant_assignments USING btree (user_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_users_current_tenant_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_users_current_tenant_id ON public.users USING btree (current_tenant_id);
|
|
|
|
|
|
--
|
|
-- Name: ix_users_email; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE UNIQUE INDEX ix_users_email ON public.users USING btree (email);
|
|
|
|
|
|
--
|
|
-- Name: ix_users_id; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_users_id ON public.users USING btree (id);
|
|
|
|
|
|
--
|
|
-- Name: ix_users_tfa_enabled; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_users_tfa_enabled ON public.users USING btree (tfa_enabled);
|
|
|
|
|
|
--
|
|
-- Name: ix_users_tfa_required; Type: INDEX; Schema: public; Owner: -
|
|
--
|
|
|
|
CREATE INDEX ix_users_tfa_required ON public.users USING btree (tfa_required);
|
|
|
|
|
|
--
|
|
-- Name: system_metrics system_metrics_tenant_id_fkey; Type: FK CONSTRAINT; Schema: admin_control; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY admin_control.system_metrics
|
|
ADD CONSTRAINT system_metrics_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES admin_control.tenants(id);
|
|
|
|
|
|
--
|
|
-- Name: audit_logs audit_logs_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.audit_logs
|
|
ADD CONSTRAINT audit_logs_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE SET NULL;
|
|
|
|
|
|
--
|
|
-- Name: audit_logs audit_logs_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.audit_logs
|
|
ADD CONSTRAINT audit_logs_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE SET NULL;
|
|
|
|
|
|
--
|
|
-- Name: billing_usage billing_usage_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.billing_usage
|
|
ADD CONSTRAINT billing_usage_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id);
|
|
|
|
|
|
--
|
|
-- Name: license_billing_usage license_billing_usage_license_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.license_billing_usage
|
|
ADD CONSTRAINT license_billing_usage_license_id_fkey FOREIGN KEY (license_id) REFERENCES public.licenses(id);
|
|
|
|
|
|
--
|
|
-- Name: license_billing_usage license_billing_usage_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.license_billing_usage
|
|
ADD CONSTRAINT license_billing_usage_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id);
|
|
|
|
|
|
--
|
|
-- Name: license_seats license_seats_license_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.license_seats
|
|
ADD CONSTRAINT license_seats_license_id_fkey FOREIGN KEY (license_id) REFERENCES public.licenses(id);
|
|
|
|
|
|
--
|
|
-- Name: license_seats license_seats_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.license_seats
|
|
ADD CONSTRAINT license_seats_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id);
|
|
|
|
|
|
--
|
|
-- Name: licenses licenses_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.licenses
|
|
ADD CONSTRAINT licenses_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id);
|
|
|
|
|
|
--
|
|
-- Name: resource_alerts resource_alerts_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_alerts
|
|
ADD CONSTRAINT resource_alerts_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: resource_pricing resource_pricing_resource_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_pricing
|
|
ADD CONSTRAINT resource_pricing_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES public.ai_resources(id);
|
|
|
|
|
|
--
|
|
-- Name: resource_quotas resource_quotas_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_quotas
|
|
ADD CONSTRAINT resource_quotas_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: resource_usage resource_usage_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.resource_usage
|
|
ADD CONSTRAINT resource_usage_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: session_data session_data_resource_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.session_data
|
|
ADD CONSTRAINT session_data_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES public.ai_resources(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: session_data session_data_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.session_data
|
|
ADD CONSTRAINT session_data_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: session_data session_data_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.session_data
|
|
ADD CONSTRAINT session_data_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: tenant_model_configs tenant_model_configs_model_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenant_model_configs
|
|
ADD CONSTRAINT tenant_model_configs_model_id_fkey FOREIGN KEY (model_id) REFERENCES public.model_configs(model_id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: tenant_model_configs tenant_model_configs_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenant_model_configs
|
|
ADD CONSTRAINT tenant_model_configs_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: tenant_resources tenant_resources_resource_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenant_resources
|
|
ADD CONSTRAINT tenant_resources_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES public.ai_resources(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: tenant_resources tenant_resources_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tenant_resources
|
|
ADD CONSTRAINT tenant_resources_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: tfa_verification_rate_limits tfa_verification_rate_limits_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.tfa_verification_rate_limits
|
|
ADD CONSTRAINT tfa_verification_rate_limits_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: usage_records usage_records_resource_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.usage_records
|
|
ADD CONSTRAINT usage_records_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES public.ai_resources(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: usage_records usage_records_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.usage_records
|
|
ADD CONSTRAINT usage_records_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: used_temp_tokens used_temp_tokens_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.used_temp_tokens
|
|
ADD CONSTRAINT used_temp_tokens_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: user_preferences user_preferences_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_preferences
|
|
ADD CONSTRAINT user_preferences_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: user_preferences user_preferences_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_preferences
|
|
ADD CONSTRAINT user_preferences_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: user_progress user_progress_resource_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_progress
|
|
ADD CONSTRAINT user_progress_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES public.ai_resources(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: user_progress user_progress_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_progress
|
|
ADD CONSTRAINT user_progress_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: user_progress user_progress_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_progress
|
|
ADD CONSTRAINT user_progress_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: user_resource_data user_resource_data_resource_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_resource_data
|
|
ADD CONSTRAINT user_resource_data_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES public.ai_resources(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: user_resource_data user_resource_data_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_resource_data
|
|
ADD CONSTRAINT user_resource_data_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: user_resource_data user_resource_data_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_resource_data
|
|
ADD CONSTRAINT user_resource_data_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: user_tenant_assignments user_tenant_assignments_invited_by_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_tenant_assignments
|
|
ADD CONSTRAINT user_tenant_assignments_invited_by_fkey FOREIGN KEY (invited_by) REFERENCES public.users(id);
|
|
|
|
|
|
--
|
|
-- Name: user_tenant_assignments user_tenant_assignments_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_tenant_assignments
|
|
ADD CONSTRAINT user_tenant_assignments_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: user_tenant_assignments user_tenant_assignments_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.user_tenant_assignments
|
|
ADD CONSTRAINT user_tenant_assignments_user_id_fkey FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- Name: users users_current_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.users
|
|
ADD CONSTRAINT users_current_tenant_id_fkey FOREIGN KEY (current_tenant_id) REFERENCES public.tenants(id);
|
|
|
|
|
|
--
|
|
-- Name: users users_tenant_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: -
|
|
--
|
|
|
|
ALTER TABLE ONLY public.users
|
|
ADD CONSTRAINT users_tenant_id_fkey FOREIGN KEY (tenant_id) REFERENCES public.tenants(id) ON DELETE CASCADE;
|
|
|
|
|
|
--
|
|
-- PostgreSQL database dump complete
|
|
--
|
|
|