a2a-source-edit: write db/migrations/006_quotejudge_studio_v1_contract.sql
This commit is contained in:
59
db/migrations/006_quotejudge_studio_v1_contract.sql
Normal file
59
db/migrations/006_quotejudge_studio_v1_contract.sql
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
-- QuoteJudge Studio v1 current product contract. Additive/idempotent for existing managed databases.
|
||||||
|
CREATE TABLE IF NOT EXISTS quote_judge_comparisons (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
tenant_key TEXT NOT NULL,
|
||||||
|
comparison_id TEXT NOT NULL,
|
||||||
|
input_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||||
|
result_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||||
|
recommendation_vendor TEXT,
|
||||||
|
latest_receipt_id TEXT,
|
||||||
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||||
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||||
|
UNIQUE (tenant_key, comparison_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE quote_judge_comparisons ADD COLUMN IF NOT EXISTS input_json JSONB NOT NULL DEFAULT '{}'::jsonb;
|
||||||
|
ALTER TABLE quote_judge_comparisons ADD COLUMN IF NOT EXISTS result_json JSONB NOT NULL DEFAULT '{}'::jsonb;
|
||||||
|
ALTER TABLE quote_judge_comparisons ADD COLUMN IF NOT EXISTS recommendation_vendor TEXT;
|
||||||
|
ALTER TABLE quote_judge_comparisons ADD COLUMN IF NOT EXISTS latest_receipt_id TEXT;
|
||||||
|
ALTER TABLE quote_judge_comparisons ADD COLUMN IF NOT EXISTS created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
|
||||||
|
ALTER TABLE quote_judge_comparisons ADD COLUMN IF NOT EXISTS updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX IF NOT EXISTS quote_judge_comparisons_tenant_comparison_uidx
|
||||||
|
ON quote_judge_comparisons (tenant_key, comparison_id);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS quote_judge_comparisons_tenant_updated_idx
|
||||||
|
ON quote_judge_comparisons (tenant_key, updated_at DESC);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS quote_judge_receipts (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
receipt_id TEXT,
|
||||||
|
tenant_key TEXT NOT NULL,
|
||||||
|
comparison_id TEXT,
|
||||||
|
skill_name TEXT,
|
||||||
|
tool_name TEXT,
|
||||||
|
status TEXT,
|
||||||
|
input_hash TEXT,
|
||||||
|
result_hash TEXT,
|
||||||
|
receipt_json JSONB,
|
||||||
|
payload JSONB,
|
||||||
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE quote_judge_receipts ADD COLUMN IF NOT EXISTS receipt_id TEXT;
|
||||||
|
ALTER TABLE quote_judge_receipts ADD COLUMN IF NOT EXISTS tenant_key TEXT;
|
||||||
|
ALTER TABLE quote_judge_receipts ADD COLUMN IF NOT EXISTS comparison_id TEXT;
|
||||||
|
ALTER TABLE quote_judge_receipts ADD COLUMN IF NOT EXISTS skill_name TEXT;
|
||||||
|
ALTER TABLE quote_judge_receipts ADD COLUMN IF NOT EXISTS tool_name TEXT;
|
||||||
|
ALTER TABLE quote_judge_receipts ADD COLUMN IF NOT EXISTS status TEXT;
|
||||||
|
ALTER TABLE quote_judge_receipts ADD COLUMN IF NOT EXISTS input_hash TEXT;
|
||||||
|
ALTER TABLE quote_judge_receipts ADD COLUMN IF NOT EXISTS result_hash TEXT;
|
||||||
|
ALTER TABLE quote_judge_receipts ADD COLUMN IF NOT EXISTS receipt_json JSONB;
|
||||||
|
ALTER TABLE quote_judge_receipts ADD COLUMN IF NOT EXISTS payload JSONB;
|
||||||
|
ALTER TABLE quote_judge_receipts ADD COLUMN IF NOT EXISTS created_at TIMESTAMPTZ NOT NULL DEFAULT NOW();
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS quote_judge_receipts_tenant_comparison_idx
|
||||||
|
ON quote_judge_receipts (tenant_key, comparison_id, created_at DESC);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS quote_judge_receipts_receipt_id_idx
|
||||||
|
ON quote_judge_receipts (receipt_id);
|
||||||
Reference in New Issue
Block a user