53 lines
2.3 KiB
SQL
53 lines
2.3 KiB
SQL
CREATE TABLE "NotificationPreference" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"emailEnabled" BOOLEAN NOT NULL DEFAULT true,
|
|
"pushEnabled" BOOLEAN NOT NULL DEFAULT false,
|
|
"minSeverity" TEXT NOT NULL DEFAULT 'info',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "NotificationPreference_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE TABLE "Notification" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"type" TEXT NOT NULL,
|
|
"severity" TEXT NOT NULL DEFAULT 'info',
|
|
"title" TEXT NOT NULL,
|
|
"body" TEXT NOT NULL,
|
|
"metadata" JSONB NOT NULL DEFAULT '{}',
|
|
"channels" TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[],
|
|
"readAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "Notification_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE TABLE "PushSubscription" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"endpoint" TEXT NOT NULL,
|
|
"p256dh" TEXT NOT NULL,
|
|
"auth" TEXT NOT NULL,
|
|
"userAgent" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
"lastUsedAt" TIMESTAMP(3),
|
|
"revokedAt" TIMESTAMP(3),
|
|
|
|
CONSTRAINT "PushSubscription_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE UNIQUE INDEX "NotificationPreference_userId_key" ON "NotificationPreference"("userId");
|
|
CREATE INDEX "Notification_userId_createdAt_idx" ON "Notification"("userId", "createdAt");
|
|
CREATE INDEX "Notification_userId_readAt_idx" ON "Notification"("userId", "readAt");
|
|
CREATE INDEX "Notification_type_createdAt_idx" ON "Notification"("type", "createdAt");
|
|
CREATE UNIQUE INDEX "PushSubscription_endpoint_key" ON "PushSubscription"("endpoint");
|
|
CREATE INDEX "PushSubscription_userId_revokedAt_idx" ON "PushSubscription"("userId", "revokedAt");
|
|
|
|
ALTER TABLE "NotificationPreference" ADD CONSTRAINT "NotificationPreference_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE "Notification" ADD CONSTRAINT "Notification_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE "PushSubscription" ADD CONSTRAINT "PushSubscription_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|