From 550961d5247f879b2b67ffd552dc8a76a588744f Mon Sep 17 00:00:00 2001 From: nico Date: Tue, 28 Apr 2026 15:50:20 +0800 Subject: [PATCH] fix(umkm): make PasarDesa.kategoriProdukId nullable, null-out orphaned refs - bump to 0.1.38 --- package.json | 2 +- .../migration.sql | 20 +++++++++++++++++++ prisma/schema.prisma | 14 ++++++------- 3 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 prisma/migrations/20260428000002_fix_pasardesa_kategori_nullable/migration.sql diff --git a/package.json b/package.json index 4a999beb..97037ec9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "desa-darmasaba", - "version": "0.1.37", + "version": "0.1.38", "private": true, "scripts": { "dev": "next dev", diff --git a/prisma/migrations/20260428000002_fix_pasardesa_kategori_nullable/migration.sql b/prisma/migrations/20260428000002_fix_pasardesa_kategori_nullable/migration.sql new file mode 100644 index 00000000..06aa122b --- /dev/null +++ b/prisma/migrations/20260428000002_fix_pasardesa_kategori_nullable/migration.sql @@ -0,0 +1,20 @@ +-- Step 1: Seed KategoriProdukUmkm from KategoriProduk for any PasarDesa-referenced entries not yet present +INSERT INTO "KategoriProdukUmkm" ("id", "nama", "createdAt", "updatedAt", "deletedAt", "isActive") +SELECT DISTINCT kp.id, kp.nama, kp."createdAt", kp."updatedAt", kp."deletedAt", kp."isActive" +FROM "KategoriProduk" kp +WHERE kp.id IN ( + SELECT DISTINCT "kategoriProdukId" FROM "PasarDesa" + WHERE "kategoriProdukId" IS NOT NULL +) +AND NOT EXISTS ( + SELECT 1 FROM "KategoriProdukUmkm" WHERE id = kp.id +); + +-- Step 2: Make kategoriProdukId nullable to handle orphaned/legacy data +ALTER TABLE "PasarDesa" ALTER COLUMN "kategoriProdukId" DROP NOT NULL; + +-- Step 3: Null out any remaining orphaned references (not in KategoriProdukUmkm) +UPDATE "PasarDesa" +SET "kategoriProdukId" = NULL +WHERE "kategoriProdukId" IS NOT NULL + AND "kategoriProdukId" NOT IN (SELECT id FROM "KategoriProdukUmkm"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 5faf634b..f29f5eff 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1445,8 +1445,8 @@ model PasarDesa { deletedAt DateTime? isActive Boolean @default(true) - kategoriProduk KategoriProduk @relation(fields: [kategoriProdukId], references: [id]) - kategoriProdukId String + kategoriProduk KategoriProdukUmkm? @relation(fields: [kategoriProdukId], references: [id]) + kategoriProdukId String? KategoriToPasar KategoriToPasar[] } @@ -1458,7 +1458,6 @@ model KategoriProduk { deletedAt DateTime? isActive Boolean @default(true) KategoriToPasar KategoriToPasar[] - PasarDesa PasarDesa[] } model KategoriToPasar { @@ -2441,13 +2440,14 @@ model Umkm { } model KategoriProdukUmkm { - id String @id @default(cuid()) + id String @id @default(cuid()) nama String - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt deletedAt DateTime? - isActive Boolean @default(true) + isActive Boolean @default(true) Umkm Umkm[] + PasarDesa PasarDesa[] }