Files
craftvia/prisma/migrations/20260810120000_policy_templates/migration.sql
T
msolarczekandClaude Opus 5 c8e6f30a27
CI / build-and-check (push) Canceled after 0s
CI / audit (push) Canceled after 0s
CI / sbom (push) Canceled after 0s
Basis: Certvia dev@a48c5fb als Fundament für Craftvia
Unveränderter Stand von certvia/dev (a48c5fb) plus Craftvia-Spezifikation
und Brandbook unter docs/craftvia/. ISMS-Module werden im Folgecommit entfernt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 11:05:39 +02:00

159 lines
6.0 KiB
SQL

-- Globale Richtlinien-Vorlagen (Plattform-Ebene, KEIN tenantId/RLS — analog implementation_hints).
-- Master-Quelle für den Mandanten-Import; Versionierung (DRAFT/PUBLISHED) + Sprache (locale).
-- CreateEnum
CREATE TYPE "PolicyTemplateStatus" AS ENUM ('DRAFT', 'PUBLISHED', 'ARCHIVED');
-- CreateTable
CREATE TABLE "policy_template_versions" (
"id" TEXT NOT NULL,
"version" TEXT NOT NULL,
"status" "PolicyTemplateStatus" NOT NULL DEFAULT 'DRAFT',
"notes" TEXT,
"published_by" TEXT,
"published_at" TIMESTAMP(3),
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
CONSTRAINT "policy_template_versions_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "policy_template_docs" (
"id" TEXT NOT NULL,
"version_id" TEXT NOT NULL,
"locale" TEXT NOT NULL,
"code" TEXT NOT NULL,
"type" "PolicyDocType" NOT NULL,
"title" TEXT NOT NULL,
"doc_version" TEXT NOT NULL DEFAULT '1.0',
"policy_code" TEXT,
"fulfills" TEXT[] DEFAULT ARRAY[]::TEXT[],
"domain" "Domain",
"raw_markdown" TEXT NOT NULL,
"order_idx" INTEGER NOT NULL DEFAULT 0,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) NOT NULL,
CONSTRAINT "policy_template_docs_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "policy_template_requirements" (
"id" TEXT NOT NULL,
"version_id" TEXT NOT NULL,
"locale" TEXT NOT NULL,
"req_id" TEXT NOT NULL,
"policy_code" TEXT NOT NULL,
"control" TEXT NOT NULL,
"obligation" TEXT NOT NULL,
"condition" TEXT,
"requirement" TEXT NOT NULL,
"implementation" TEXT NOT NULL,
"va_codes" TEXT[] DEFAULT ARRAY[]::TEXT[],
"nachweis_link" TEXT,
"order_idx" INTEGER NOT NULL DEFAULT 0,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "policy_template_requirements_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "policy_template_variables" (
"id" TEXT NOT NULL,
"version_id" TEXT NOT NULL,
"locale" TEXT NOT NULL,
"key" TEXT NOT NULL,
"title" TEXT NOT NULL,
"kind" TEXT NOT NULL,
"group_name" TEXT,
"value" TEXT NOT NULL,
"required" BOOLEAN NOT NULL DEFAULT false,
"order_idx" INTEGER NOT NULL DEFAULT 0,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "policy_template_variables_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "policy_template_baseline_params" (
"id" TEXT NOT NULL,
"version_id" TEXT NOT NULL,
"locale" TEXT NOT NULL,
"bl_id" TEXT NOT NULL,
"section" TEXT NOT NULL,
"name" TEXT NOT NULL,
"vorgabe" TEXT NOT NULL,
"order_idx" INTEGER NOT NULL DEFAULT 0,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "policy_template_baseline_params_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "policy_template_evidence" (
"id" TEXT NOT NULL,
"version_id" TEXT NOT NULL,
"locale" TEXT NOT NULL,
"nr" INTEGER NOT NULL,
"policy_code" TEXT NOT NULL,
"nachweis" TEXT NOT NULL,
"quelle" TEXT NOT NULL,
"verantwortlich" TEXT NOT NULL,
"turnus" TEXT NOT NULL,
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "policy_template_evidence_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "policy_template_versions_version_key" ON "policy_template_versions"("version");
-- CreateIndex
CREATE INDEX "policy_template_versions_status_idx" ON "policy_template_versions"("status");
-- CreateIndex
CREATE INDEX "policy_template_docs_version_id_locale_idx" ON "policy_template_docs"("version_id", "locale");
-- CreateIndex
CREATE UNIQUE INDEX "policy_template_docs_version_id_locale_code_key" ON "policy_template_docs"("version_id", "locale", "code");
-- CreateIndex
CREATE INDEX "policy_template_requirements_version_id_locale_idx" ON "policy_template_requirements"("version_id", "locale");
-- CreateIndex
CREATE UNIQUE INDEX "policy_template_requirements_version_id_locale_req_id_key" ON "policy_template_requirements"("version_id", "locale", "req_id");
-- CreateIndex
CREATE INDEX "policy_template_variables_version_id_locale_idx" ON "policy_template_variables"("version_id", "locale");
-- CreateIndex
CREATE UNIQUE INDEX "policy_template_variables_version_id_locale_key_key" ON "policy_template_variables"("version_id", "locale", "key");
-- CreateIndex
CREATE INDEX "policy_template_baseline_params_version_id_locale_idx" ON "policy_template_baseline_params"("version_id", "locale");
-- CreateIndex
CREATE UNIQUE INDEX "policy_template_baseline_params_version_id_locale_bl_id_key" ON "policy_template_baseline_params"("version_id", "locale", "bl_id");
-- CreateIndex
CREATE INDEX "policy_template_evidence_version_id_locale_idx" ON "policy_template_evidence"("version_id", "locale");
-- CreateIndex
CREATE UNIQUE INDEX "policy_template_evidence_version_id_locale_nr_key" ON "policy_template_evidence"("version_id", "locale", "nr");
-- AddForeignKey
ALTER TABLE "policy_template_docs" ADD CONSTRAINT "policy_template_docs_version_id_fkey" FOREIGN KEY ("version_id") REFERENCES "policy_template_versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "policy_template_requirements" ADD CONSTRAINT "policy_template_requirements_version_id_fkey" FOREIGN KEY ("version_id") REFERENCES "policy_template_versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "policy_template_variables" ADD CONSTRAINT "policy_template_variables_version_id_fkey" FOREIGN KEY ("version_id") REFERENCES "policy_template_versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "policy_template_baseline_params" ADD CONSTRAINT "policy_template_baseline_params_version_id_fkey" FOREIGN KEY ("version_id") REFERENCES "policy_template_versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "policy_template_evidence" ADD CONSTRAINT "policy_template_evidence_version_id_fkey" FOREIGN KEY ("version_id") REFERENCES "policy_template_versions"("id") ON DELETE CASCADE ON UPDATE CASCADE;