♻️ Make user required in subscription model (#1585)

This commit is contained in:
Luke Vella 2025-02-27 15:23:01 +00:00 committed by GitHub
parent 01758f81ae
commit aebea5a41c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 87 additions and 92 deletions

View file

@ -0,0 +1,30 @@
-- DropForeignKey
ALTER TABLE "users" DROP CONSTRAINT "users_subscription_id_fkey";
-- DropIndex
DROP INDEX "users_subscription_id_key";
-- AlterTable
ALTER TABLE "subscriptions" ADD COLUMN "user_id" TEXT;
-- Populate user_id in subscriptions table using data from users table
UPDATE "subscriptions" s
SET "user_id" = u.id
FROM "users" u
WHERE u."subscription_id" = s.id;
-- Delete orphaned subscriptions (subscriptions without a corresponding user)
DELETE FROM "subscriptions"
WHERE "user_id" IS NULL;
-- Make user_id NOT NULL after populating data
ALTER TABLE "subscriptions" ALTER COLUMN "user_id" SET NOT NULL;
-- AlterTable
ALTER TABLE "users" DROP COLUMN "subscription_id";
-- CreateIndex
CREATE UNIQUE INDEX "subscriptions_user_id_key" ON "subscriptions"("user_id");
-- AddForeignKey
ALTER TABLE "subscriptions" ADD CONSTRAINT "subscriptions_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View file

@ -49,7 +49,6 @@ model User {
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime? @updatedAt @map("updated_at")
customerId String? @map("customer_id")
subscriptionId String? @unique @map("subscription_id")
comments Comment[]
polls Poll[]
@ -58,8 +57,7 @@ model User {
accounts Account[]
participants Participant[]
paymentMethods PaymentMethod[]
subscription Subscription? @relation(fields: [subscriptionId], references: [id], onDelete: SetNull)
subscription Subscription? @relation("UserToSubscription")
@@map("users")
}
@ -111,8 +109,9 @@ model Subscription {
periodStart DateTime @map("period_start")
periodEnd DateTime @map("period_end")
cancelAtPeriodEnd Boolean @default(false) @map("cancel_at_period_end")
userId String @unique @map("user_id")
user User?
user User @relation("UserToSubscription", fields: [userId], references: [id], onDelete: Cascade)
@@map("subscriptions")
}