43 lines
1.8 KiB
SQL
43 lines
1.8 KiB
SQL
-- Reason catalog: relational storage (replaces JSON in org_settings for new data).
|
|
|
|
CREATE TABLE "reason_catalog_category" (
|
|
"id" TEXT NOT NULL,
|
|
"org_id" TEXT NOT NULL,
|
|
"kind" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"code_prefix" TEXT NOT NULL,
|
|
"sort_order" INTEGER NOT NULL DEFAULT 0,
|
|
"active" BOOLEAN NOT NULL DEFAULT true,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "reason_catalog_category_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE TABLE "reason_catalog_item" (
|
|
"id" TEXT NOT NULL,
|
|
"org_id" TEXT NOT NULL,
|
|
"category_id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"code_suffix" TEXT NOT NULL,
|
|
"reason_code" TEXT NOT NULL,
|
|
"sort_order" INTEGER NOT NULL DEFAULT 0,
|
|
"active" BOOLEAN NOT NULL DEFAULT true,
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "reason_catalog_item_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE INDEX "reason_catalog_category_org_id_kind_active_idx" ON "reason_catalog_category"("org_id", "kind", "active");
|
|
|
|
CREATE UNIQUE INDEX "reason_catalog_item_org_id_reason_code_key" ON "reason_catalog_item"("org_id", "reason_code");
|
|
|
|
CREATE INDEX "reason_catalog_item_org_id_category_id_idx" ON "reason_catalog_item"("org_id", "category_id");
|
|
|
|
ALTER TABLE "reason_catalog_category" ADD CONSTRAINT "reason_catalog_category_org_id_fkey" FOREIGN KEY ("org_id") REFERENCES "Org"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
ALTER TABLE "reason_catalog_item" ADD CONSTRAINT "reason_catalog_item_org_id_fkey" FOREIGN KEY ("org_id") REFERENCES "Org"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
ALTER TABLE "reason_catalog_item" ADD CONSTRAINT "reason_catalog_item_category_id_fkey" FOREIGN KEY ("category_id") REFERENCES "reason_catalog_category"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|