From 2b1da9f5c4307f56f311743b4d1b2e55f3e37db6 Mon Sep 17 00:00:00 2001 From: Scrum4Me Agent <30029041+madhura68@users.noreply.github.com> Date: Thu, 7 May 2026 20:50:26 +0200 Subject: [PATCH] ST-cmovs79lt: Schema + migratie PushSubscription model Voeg PushSubscription model toe aan prisma/schema.prisma met snake_case-conventie, relation field op User, en bijbehorende migratie (push_subscriptions tabel, FK + index op user_id). Co-Authored-By: Claude Sonnet 4.6 --- .../migration.sql | 20 +++++++++++++++++++ prisma/schema.prisma | 16 +++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 prisma/migrations/20260507200000_add_push_subscriptions/migration.sql diff --git a/prisma/migrations/20260507200000_add_push_subscriptions/migration.sql b/prisma/migrations/20260507200000_add_push_subscriptions/migration.sql new file mode 100644 index 0000000..2abe20f --- /dev/null +++ b/prisma/migrations/20260507200000_add_push_subscriptions/migration.sql @@ -0,0 +1,20 @@ +-- PushSubscription model for Web Push notifications (PBI-55) + +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, + "last_used_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "push_subscriptions_pkey" PRIMARY KEY ("id") +); + +CREATE UNIQUE INDEX "push_subscriptions_endpoint_key" ON "push_subscriptions"("endpoint"); + +CREATE INDEX "push_subscriptions_user_id_idx" ON "push_subscriptions"("user_id"); + +ALTER TABLE "push_subscriptions" ADD CONSTRAINT "push_subscriptions_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 548f8fc..52da4a6 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -164,6 +164,7 @@ model User { claude_jobs ClaudeJob[] claude_workers ClaudeWorker[] started_sprint_runs SprintRun[] @relation("SprintRunStartedBy") + push_subscriptions PushSubscription[] @@index([active_product_id]) @@map("users") @@ -624,3 +625,18 @@ model ClaudeQuestion { @@index([status, expires_at]) @@map("claude_questions") } + +model PushSubscription { + id String @id @default(cuid()) + user User @relation(fields: [user_id], references: [id], onDelete: Cascade) + user_id String + endpoint String @unique + p256dh String + auth String + user_agent String? + created_at DateTime @default(now()) + last_used_at DateTime @default(now()) + + @@index([user_id]) + @@map("push_subscriptions") +}