163 lines
6.4 KiB
PL/PgSQL
163 lines
6.4 KiB
PL/PgSQL
-- HISTORISCHER UPGRADEPFAD: aktuelle Releases verwenden prisma/migrations und deploy/README.md.
|
|
-- Nicht zusätzlich zu versionierten Migrationen oder auf bereits aktualisierten Datenbanken ausführen.
|
|
-- Additives Upgrade für einen Personalbereich einschließlich vorhandener Mail-Erweiterung.
|
|
-- Beschreibt ausschließlich den damaligen Ausgangsstand vor Einführung der Migrationshistorie.
|
|
BEGIN;
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "NotdienstAlarmStatus" AS ENUM ('PENDING', 'CONFIRMED', 'DECLINED', 'LATE_CONFIRMATION', 'REVIEW_REQUIRED', 'CANCELLED');
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "notdienst_alerts" ADD COLUMN "alarmId" TEXT;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "notdienst_alarms" (
|
|
"id" TEXT NOT NULL,
|
|
"kitaId" TEXT NOT NULL,
|
|
"assignmentId" TEXT,
|
|
"activeAssignmentId" TEXT,
|
|
"familyId" TEXT NOT NULL,
|
|
"familyName" TEXT NOT NULL,
|
|
"childName" TEXT NOT NULL,
|
|
"date" DATE NOT NULL,
|
|
"wholeDay" BOOLEAN NOT NULL DEFAULT true,
|
|
"startMinute" INTEGER,
|
|
"endMinute" INTEGER,
|
|
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
"deadline" TIMESTAMP(3) NOT NULL,
|
|
"status" "NotdienstAlarmStatus" NOT NULL DEFAULT 'PENDING',
|
|
"triggeredById" TEXT,
|
|
"triggeredAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"respondedById" TEXT,
|
|
"respondedAt" TIMESTAMP(3),
|
|
"responseSource" TEXT,
|
|
"escalatedAt" TIMESTAMP(3),
|
|
"educatorId" TEXT,
|
|
"notes" TEXT,
|
|
"cancelledAt" TIMESTAMP(3),
|
|
"cancelReason" TEXT,
|
|
|
|
CONSTRAINT "notdienst_alarms_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "notdienst_alarm_recipients" (
|
|
"id" TEXT NOT NULL,
|
|
"alarmId" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"token" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "notdienst_alarm_recipients_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "notdienst_alarm_notifications" (
|
|
"id" TEXT NOT NULL,
|
|
"alarmId" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"eventKey" TEXT NOT NULL,
|
|
"message" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"readAt" TIMESTAMP(3),
|
|
|
|
CONSTRAINT "notdienst_alarm_notifications_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "notdienst_alarm_emails" (
|
|
"id" TEXT NOT NULL,
|
|
"alarmId" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"eventKey" TEXT NOT NULL,
|
|
"kind" TEXT NOT NULL,
|
|
"subject" TEXT NOT NULL,
|
|
"message" TEXT NOT NULL,
|
|
"path" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"sentAt" TIMESTAMP(3),
|
|
"skippedAt" TIMESTAMP(3),
|
|
"leaseUntil" TIMESTAMP(3),
|
|
"failed" BOOLEAN NOT NULL DEFAULT false,
|
|
"attempts" INTEGER NOT NULL DEFAULT 0,
|
|
|
|
CONSTRAINT "notdienst_alarm_emails_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "notdienst_alarm_history" (
|
|
"id" TEXT NOT NULL,
|
|
"alarmId" TEXT NOT NULL,
|
|
"actorId" TEXT,
|
|
"action" TEXT NOT NULL,
|
|
"details" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "notdienst_alarm_history_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "notdienst_alarms_activeAssignmentId_key" ON "notdienst_alarms"("activeAssignmentId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "notdienst_alarms_kitaId_date_idx" ON "notdienst_alarms"("kitaId", "date");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "notdienst_alarms_status_deadline_idx" ON "notdienst_alarms"("status", "deadline");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "notdienst_alarm_recipients_token_key" ON "notdienst_alarm_recipients"("token");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "notdienst_alarm_recipients_alarmId_userId_key" ON "notdienst_alarm_recipients"("alarmId", "userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "notdienst_alarm_notifications_userId_readAt_idx" ON "notdienst_alarm_notifications"("userId", "readAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "notdienst_alarm_notifications_alarmId_userId_eventKey_key" ON "notdienst_alarm_notifications"("alarmId", "userId", "eventKey");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "notdienst_alarm_emails_sentAt_skippedAt_createdAt_idx" ON "notdienst_alarm_emails"("sentAt", "skippedAt", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "notdienst_alarm_emails_alarmId_userId_eventKey_key" ON "notdienst_alarm_emails"("alarmId", "userId", "eventKey");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "notdienst_alarm_history_alarmId_createdAt_idx" ON "notdienst_alarm_history"("alarmId", "createdAt");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "notdienst_alarms" ADD CONSTRAINT "notdienst_alarms_kitaId_fkey" FOREIGN KEY ("kitaId") REFERENCES "kitas"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "notdienst_alarms" ADD CONSTRAINT "notdienst_alarms_assignmentId_fkey" FOREIGN KEY ("assignmentId") REFERENCES "notdienst_assignments"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "notdienst_alarms" ADD CONSTRAINT "notdienst_alarms_familyId_fkey" FOREIGN KEY ("familyId") REFERENCES "families"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "notdienst_alarm_recipients" ADD CONSTRAINT "notdienst_alarm_recipients_alarmId_fkey" FOREIGN KEY ("alarmId") REFERENCES "notdienst_alarms"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "notdienst_alarm_recipients" ADD CONSTRAINT "notdienst_alarm_recipients_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "notdienst_alarm_notifications" ADD CONSTRAINT "notdienst_alarm_notifications_alarmId_fkey" FOREIGN KEY ("alarmId") REFERENCES "notdienst_alarms"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "notdienst_alarm_notifications" ADD CONSTRAINT "notdienst_alarm_notifications_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "notdienst_alarm_emails" ADD CONSTRAINT "notdienst_alarm_emails_alarmId_fkey" FOREIGN KEY ("alarmId") REFERENCES "notdienst_alarms"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "notdienst_alarm_emails" ADD CONSTRAINT "notdienst_alarm_emails_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "notdienst_alarm_history" ADD CONSTRAINT "notdienst_alarm_history_alarmId_fkey" FOREIGN KEY ("alarmId") REFERENCES "notdienst_alarms"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "notdienst_alerts" ADD CONSTRAINT "notdienst_alerts_alarmId_fkey" FOREIGN KEY ("alarmId") REFERENCES "notdienst_alarms"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
|
|
COMMIT;
|