From 72671d146db3432c4c18c3fead5d48c140ccd53c Mon Sep 17 00:00:00 2001 From: root Date: Mon, 17 Aug 2026 21:59:23 -0400 Subject: [PATCH] fix migration production --- .../migration.sql | 19 ++++++++++--------- packages/database/scripts/db-deploy.cjs | 4 ++-- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/database/prisma/migrations/20260817190000_remove_stripe_payment_provider/migration.sql b/packages/database/prisma/migrations/20260817190000_remove_stripe_payment_provider/migration.sql index e5c36e6..429f41e 100644 --- a/packages/database/prisma/migrations/20260817190000_remove_stripe_payment_provider/migration.sql +++ b/packages/database/prisma/migrations/20260817190000_remove_stripe_payment_provider/migration.sql @@ -26,10 +26,13 @@ BEGIN AND column_name = 'paymentMethodsEnabled' ) THEN UPDATE "brand_settings" - SET "paymentMethodsEnabled" = ARRAY( - SELECT x - FROM unnest("paymentMethodsEnabled") AS x - WHERE x::text <> 'STRIPE' + SET "paymentMethodsEnabled" = COALESCE( + ARRAY( + SELECT x + FROM unnest("paymentMethodsEnabled") AS x + WHERE x::text <> 'STRIPE' + ), + ARRAY[]::"PaymentProvider"[] ) WHERE EXISTS ( SELECT 1 @@ -107,15 +110,13 @@ BEGIN AND table_name = 'brand_settings' AND column_name = 'paymentMethodsEnabled' ) THEN + -- PostgreSQL rejects subqueries in ALTER ... USING. STRIPE was already + -- filtered out above, so a text-array recast is enough. ALTER TABLE "brand_settings" ALTER COLUMN "paymentMethodsEnabled" TYPE "PaymentProvider_new"[] USING ( COALESCE( - ARRAY( - SELECT x::text::"PaymentProvider_new" - FROM unnest("paymentMethodsEnabled") AS x - WHERE x::text <> 'STRIPE' - ), + "paymentMethodsEnabled"::text[]::"PaymentProvider_new"[], ARRAY[]::"PaymentProvider_new"[] ) ); diff --git a/packages/database/scripts/db-deploy.cjs b/packages/database/scripts/db-deploy.cjs index 9f35249..5c304b3 100644 --- a/packages/database/scripts/db-deploy.cjs +++ b/packages/database/scripts/db-deploy.cjs @@ -155,8 +155,8 @@ async function main() { } // Prisma records a failed transactional migration even after the SQL rolls back. - // In local/dev Docker that leftover row blocks every subsequent startup. - if (process.env.NODE_ENV === 'production') { + // That leftover row blocks every subsequent Docker/startup deploy. + if (process.env.DB_DEPLOY_SKIP_FAILED_RETRY === 'true') { console.error('[db:deploy] Found failed migrations in a non-empty database. Resolve them manually before deploying again.') process.exit(1) }