38 lines
2.2 KiB
PL/PgSQL
38 lines
2.2 KiB
PL/PgSQL
BEGIN;
|
|
|
|
CREATE TABLE content_model_config (
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
public_id uuid NOT NULL UNIQUE DEFAULT gen_random_uuid(),
|
|
tenant_id uuid NOT NULL REFERENCES tenant(id),
|
|
display_name varchar(120) NOT NULL CHECK (length(trim(display_name)) BETWEEN 1 AND 120),
|
|
provider varchar(32) NOT NULL CHECK (provider IN ('ark','openai_compatible')),
|
|
base_url varchar(500) NOT NULL CHECK (length(trim(base_url)) BETWEEN 8 AND 500),
|
|
model_id varchar(200) NOT NULL CHECK (length(trim(model_id)) BETWEEN 1 AND 200),
|
|
encrypted_api_key bytea NOT NULL,
|
|
nonce bytea NOT NULL,
|
|
key_version bigint NOT NULL DEFAULT 1 CHECK (key_version > 0),
|
|
credential_hint varchar(16) NOT NULL,
|
|
temperature numeric(3,2) NOT NULL DEFAULT 0.20 CHECK (temperature >= 0 AND temperature <= 2),
|
|
max_tokens integer NOT NULL DEFAULT 1200 CHECK (max_tokens BETWEEN 256 AND 8192),
|
|
status varchar(16) NOT NULL DEFAULT 'inactive' CHECK (status IN ('inactive','active','revoked')),
|
|
test_status varchar(16) NOT NULL DEFAULT 'untested' CHECK (test_status IN ('untested','passed','failed')),
|
|
last_tested_at timestamptz,
|
|
last_error_code varchar(80),
|
|
activated_at timestamptz,
|
|
created_by uuid NOT NULL,
|
|
updated_by uuid NOT NULL,
|
|
version bigint NOT NULL DEFAULT 1 CHECK (version > 0),
|
|
created_at timestamptz NOT NULL DEFAULT now(),
|
|
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
CONSTRAINT content_model_creator_tenant_fk FOREIGN KEY (created_by,tenant_id) REFERENCES user_account(id,tenant_id),
|
|
CONSTRAINT content_model_updater_tenant_fk FOREIGN KEY (updated_by,tenant_id) REFERENCES user_account(id,tenant_id),
|
|
CONSTRAINT content_model_identity_unique UNIQUE (tenant_id,provider,base_url,model_id)
|
|
);
|
|
|
|
CREATE UNIQUE INDEX content_model_one_active_per_tenant
|
|
ON content_model_config(tenant_id) WHERE status='active';
|
|
CREATE INDEX content_model_list_idx
|
|
ON content_model_config(tenant_id,status,updated_at DESC);
|
|
|
|
COMMIT;
|