dify/knowledge-fs/packages/database/migrations/0043_semantic_generation_receipts.postgres.sql

45 lines
2.0 KiB
SQL

-- Knowledge Platform schema migration
-- Migration id: 0043_semantic_generation_receipts
-- Dialect: postgres
CREATE TABLE IF NOT EXISTS "knowledge_node_generation_receipts" (
"knowledge_space_id" UUID NOT NULL,
"publication_generation_id" UUID NOT NULL,
"parse_artifact_id" UUID NOT NULL,
"document_asset_id" UUID NOT NULL,
"artifact_hash" VARCHAR(64) NOT NULL,
"document_chunk_count" INTEGER NOT NULL,
"stored_node_count" INTEGER NOT NULL,
"request_fingerprint" VARCHAR(71) NOT NULL,
"response_fingerprint" VARCHAR(71) NOT NULL,
"prompt_response_fingerprint" VARCHAR(71) NOT NULL,
"receipt" JSONB NOT NULL,
PRIMARY KEY ("knowledge_space_id", "publication_generation_id", "parse_artifact_id"),
CONSTRAINT "knowledge_node_generation_receipts_counts_ck" CHECK (
"document_chunk_count" >= 0 AND "stored_node_count" >= 0
AND "stored_node_count" <= "document_chunk_count"
),
CONSTRAINT "knowledge_node_generation_receipts_hashes_ck" CHECK (
"artifact_hash" ~ '^[a-f0-9]{64}$'
AND "request_fingerprint" ~ '^sha256:[a-f0-9]{64}$'
AND "response_fingerprint" ~ '^sha256:[a-f0-9]{64}$'
AND "prompt_response_fingerprint" ~ '^sha256:[a-f0-9]{64}$'
),
CONSTRAINT "knowledge_node_generation_receipts_json_ck"
CHECK (jsonb_typeof("receipt") = 'object'),
CONSTRAINT "knowledge_node_generation_receipts_bytes_ck"
CHECK (octet_length("receipt"::text) <= 8388608),
CONSTRAINT "knowledge_node_generation_receipts_pub_gen_nonzero_ck"
CHECK ("publication_generation_id" <> '00000000-0000-0000-0000-000000000000'::uuid),
FOREIGN KEY ("knowledge_space_id")
REFERENCES "knowledge_spaces" ("id") ON DELETE CASCADE,
FOREIGN KEY ("document_asset_id")
REFERENCES "document_assets" ("id") ON DELETE CASCADE,
FOREIGN KEY ("parse_artifact_id")
REFERENCES "parse_artifacts" ("id") ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS "knowledge_node_generation_receipts_document_idx"
ON "knowledge_node_generation_receipts"
("knowledge_space_id", "document_asset_id", "publication_generation_id", "parse_artifact_id");