NeahStable/prisma/migrations/20260114125000_add_calendar_sync/migration.sql
2026-01-14 13:53:11 +01:00

77 lines
2.6 KiB
SQL

-- AlterTable: Add missionId column if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'Calendar' AND column_name = 'missionId'
) THEN
ALTER TABLE "Calendar" ADD COLUMN "missionId" TEXT;
END IF;
END $$;
-- CreateTable: Create CalendarSync table if it doesn't exist
CREATE TABLE IF NOT EXISTS "CalendarSync" (
"id" TEXT NOT NULL,
"calendarId" TEXT NOT NULL,
"mailCredentialId" TEXT,
"provider" TEXT NOT NULL,
"externalCalendarId" TEXT,
"externalCalendarUrl" TEXT,
"syncEnabled" BOOLEAN NOT NULL DEFAULT true,
"lastSyncAt" TIMESTAMP(3),
"syncFrequency" INTEGER NOT NULL DEFAULT 15,
"lastSyncError" TEXT,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "CalendarSync_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX IF NOT EXISTS "CalendarSync_calendarId_key" ON "CalendarSync"("calendarId");
-- CreateIndex
CREATE INDEX IF NOT EXISTS "CalendarSync_calendarId_idx" ON "CalendarSync"("calendarId");
-- CreateIndex
CREATE INDEX IF NOT EXISTS "CalendarSync_mailCredentialId_idx" ON "CalendarSync"("mailCredentialId");
-- CreateIndex
CREATE INDEX IF NOT EXISTS "CalendarSync_provider_idx" ON "CalendarSync"("provider");
-- CreateIndex
CREATE INDEX IF NOT EXISTS "Calendar_missionId_idx" ON "Calendar"("missionId");
-- AddForeignKey: Add Calendar_missionId_fkey if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_constraint
WHERE conname = 'Calendar_missionId_fkey'
) THEN
ALTER TABLE "Calendar" ADD CONSTRAINT "Calendar_missionId_fkey" FOREIGN KEY ("missionId") REFERENCES "Mission"("id") ON DELETE SET NULL ON UPDATE CASCADE;
END IF;
END $$;
-- AddForeignKey: Add CalendarSync_calendarId_fkey if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_constraint
WHERE conname = 'CalendarSync_calendarId_fkey'
) THEN
ALTER TABLE "CalendarSync" ADD CONSTRAINT "CalendarSync_calendarId_fkey" FOREIGN KEY ("calendarId") REFERENCES "Calendar"("id") ON DELETE CASCADE ON UPDATE CASCADE;
END IF;
END $$;
-- AddForeignKey: Add CalendarSync_mailCredentialId_fkey if it doesn't exist
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_constraint
WHERE conname = 'CalendarSync_mailCredentialId_fkey'
) THEN
ALTER TABLE "CalendarSync" ADD CONSTRAINT "CalendarSync_mailCredentialId_fkey" FOREIGN KEY ("mailCredentialId") REFERENCES "MailCredentials"("id") ON DELETE SET NULL ON UPDATE CASCADE;
END IF;
END $$;