-- CreateTable CREATE TABLE "control_assessments" ( "id" TEXT NOT NULL, "tenant_id" TEXT NOT NULL, "control" TEXT NOT NULL, "suggested_value" INTEGER, "confirmed_value" INTEGER NOT NULL, "target" INTEGER NOT NULL, "justification" TEXT, "confirmed_by_id" TEXT, "confirmed_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "control_assessments_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE INDEX "control_assessments_tenant_id_idx" ON "control_assessments"("tenant_id"); -- CreateIndex CREATE UNIQUE INDEX "control_assessments_tenant_id_control_key" ON "control_assessments"("tenant_id", "control"); -- Row Level Security (zweite Verteidigungslinie, analog übrige Mandanten-Tabellen) DO $$ DECLARE t text; BEGIN FOREACH t IN ARRAY ARRAY['control_assessments'] LOOP EXECUTE format('ALTER TABLE %I ENABLE ROW LEVEL SECURITY', t); EXECUTE format( 'CREATE POLICY tenant_isolation ON %I USING (tenant_id = current_setting(''app.tenant_id'', true))', t ); END LOOP; END $$;