/* Warnings: - You are about to drop the `ProdukUmkm` table. If the table is not empty, all the data it contains will be lost. - Added the required column `umkmId` to the `PasarDesa` table without a default value. This is not possible if the table is not empty. */ -- DropForeignKey (idempotent) ALTER TABLE "PenjualanProduk" DROP CONSTRAINT IF EXISTS "PenjualanProduk_produkId_fkey"; ALTER TABLE "ProdukUmkm" DROP CONSTRAINT IF EXISTS "ProdukUmkm_imageId_fkey"; ALTER TABLE "ProdukUmkm" DROP CONSTRAINT IF EXISTS "ProdukUmkm_umkmId_fkey"; -- AlterTable KategoriProduk (idempotent via DO block) DO $$ BEGIN BEGIN ALTER TABLE "KategoriProduk" ALTER COLUMN "deletedAt" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END; BEGIN ALTER TABLE "KategoriProduk" ALTER COLUMN "deletedAt" DROP DEFAULT; EXCEPTION WHEN others THEN NULL; END; END $$; -- AlterTable PasarDesa: add columns if not exists, handle NOT NULL safely DO $$ BEGIN IF NOT EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_name = 'PasarDesa' AND column_name = 'stok' ) THEN ALTER TABLE "PasarDesa" ADD COLUMN "stok" INTEGER NOT NULL DEFAULT 0; END IF; IF NOT EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_name = 'PasarDesa' AND column_name = 'umkmId' ) THEN ALTER TABLE "PasarDesa" ADD COLUMN "umkmId" TEXT; END IF; END $$; -- Set default value for existing rows before making NOT NULL UPDATE "PasarDesa" SET "umkmId" = '' WHERE "umkmId" IS NULL; ALTER TABLE "PasarDesa" ALTER COLUMN "umkmId" SET NOT NULL; -- Remaining PasarDesa alterations (idempotent) DO $$ BEGIN BEGIN ALTER TABLE "PasarDesa" ALTER COLUMN "rating" SET DEFAULT 0; EXCEPTION WHEN others THEN NULL; END; BEGIN ALTER TABLE "PasarDesa" ALTER COLUMN "alamatUsaha" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END; BEGIN ALTER TABLE "PasarDesa" ALTER COLUMN "deletedAt" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END; BEGIN ALTER TABLE "PasarDesa" ALTER COLUMN "deletedAt" DROP DEFAULT; EXCEPTION WHEN others THEN NULL; END; BEGIN ALTER TABLE "PasarDesa" ALTER COLUMN "kontak" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END; END $$; -- DropTable (idempotent) DROP TABLE IF EXISTS "ProdukUmkm"; -- Clean up rows with invalid umkmId before adding FK constraint -- Must delete child tables first to avoid FK violations DELETE FROM "KategoriToPasar" WHERE "pasarDesaId" IN ( SELECT id FROM "PasarDesa" WHERE "umkmId" = '' OR "umkmId" NOT IN (SELECT id FROM "Umkm") ); DELETE FROM "PenjualanProduk" WHERE "produkId" IN ( SELECT id FROM "PasarDesa" WHERE "umkmId" = '' OR "umkmId" NOT IN (SELECT id FROM "Umkm") ); DELETE FROM "PasarDesa" WHERE "umkmId" = '' OR "umkmId" NOT IN (SELECT id FROM "Umkm"); -- AddForeignKey (idempotent) DO $$ BEGIN IF NOT EXISTS ( SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'PasarDesa_umkmId_fkey' ) THEN ALTER TABLE "PasarDesa" ADD CONSTRAINT "PasarDesa_umkmId_fkey" FOREIGN KEY ("umkmId") REFERENCES "Umkm"("id") ON DELETE RESTRICT ON UPDATE CASCADE; END IF; IF NOT EXISTS ( SELECT 1 FROM information_schema.table_constraints WHERE constraint_name = 'PenjualanProduk_produkId_fkey' ) THEN ALTER TABLE "PenjualanProduk" ADD CONSTRAINT "PenjualanProduk_produkId_fkey" FOREIGN KEY ("produkId") REFERENCES "PasarDesa"("id") ON DELETE RESTRICT ON UPDATE CASCADE; END IF; END $$;