-- CreateTable CREATE TABLE "notification_channels" ( "id" TEXT NOT NULL, "user_id" TEXT NOT NULL, "type" TEXT NOT NULL, "enabled" BOOLEAN NOT NULL DEFAULT true, "config" TEXT NOT NULL, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "notification_channels_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "notification_preferences" ( "id" TEXT NOT NULL, "channel_id" TEXT NOT NULL, "event_type" TEXT NOT NULL, "enabled" BOOLEAN NOT NULL DEFAULT true, CONSTRAINT "notification_preferences_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "push_subscriptions" ( "id" TEXT NOT NULL, "user_id" TEXT NOT NULL, "endpoint" TEXT NOT NULL, "p256dh" TEXT NOT NULL, "auth" TEXT NOT NULL, "user_agent" TEXT, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "push_subscriptions_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE INDEX "notification_channels_user_id_idx" ON "notification_channels"("user_id"); CREATE UNIQUE INDEX "notification_channels_user_id_type_key" ON "notification_channels"("user_id", "type"); -- CreateIndex CREATE UNIQUE INDEX "notification_preferences_channel_id_event_type_key" ON "notification_preferences"("channel_id", "event_type"); -- CreateIndex CREATE INDEX "push_subscriptions_user_id_idx" ON "push_subscriptions"("user_id"); CREATE UNIQUE INDEX "push_subscriptions_user_id_endpoint_key" ON "push_subscriptions"("user_id", "endpoint"); -- AddForeignKey ALTER TABLE "notification_channels" ADD CONSTRAINT "notification_channels_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "notification_preferences" ADD CONSTRAINT "notification_preferences_channel_id_fkey" FOREIGN KEY ("channel_id") REFERENCES "notification_channels"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "push_subscriptions" ADD CONSTRAINT "push_subscriptions_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;