update payment method, remove stripe, paypal, amanapay
Build & Push / Pipeline Tests (push) Failing after 59s
Build & Push / Build & Push Docker Image (push) Has been skipped
Test / Type Check (all packages) (push) Failing after 48s
Test / API Unit Tests (push) Has been skipped
Test / Homepage Unit Tests (push) Has been skipped
Test / Carplace Unit Tests (push) Has been skipped
Test / Admin Unit Tests (push) Has been skipped
Test / Dashboard Unit Tests (push) Has been skipped
Test / API Integration Tests (push) Has been skipped

This commit is contained in:
root
2026-08-17 21:05:29 -04:00
parent c9915a8315
commit fe8ffbeb9f
109 changed files with 568 additions and 2662 deletions
@@ -0,0 +1,129 @@
-- Remap leftover Stripe rows before the enum values are dropped.
-- Compare as text so this stays valid if STRIPE is already absent from the enum.
UPDATE "billing_invoices"
SET "collectionMethod" = 'BANK_TRANSFER'
WHERE "collectionMethod"::text = 'STRIPE';
UPDATE "billing_invoices"
SET "paymentProvider" = 'MANUAL'
WHERE "paymentProvider"::text = 'STRIPE';
UPDATE "subscription_invoices"
SET "paymentProvider" = 'MANUAL'
WHERE "paymentProvider"::text = 'STRIPE';
UPDATE "rental_payments"
SET "paymentProvider" = 'MANUAL'
WHERE "paymentProvider"::text = 'STRIPE';
DO $$
BEGIN
IF EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'brand_settings'
AND column_name = 'paymentMethodsEnabled'
) THEN
UPDATE "brand_settings"
SET "paymentMethodsEnabled" = ARRAY(
SELECT x
FROM unnest("paymentMethodsEnabled") AS x
WHERE x::text <> 'STRIPE'
)
WHERE EXISTS (
SELECT 1
FROM unnest("paymentMethodsEnabled") AS x
WHERE x::text = 'STRIPE'
);
END IF;
END $$;
DROP INDEX IF EXISTS "subscription_invoices_stripeCheckoutSessionId_key";
ALTER TABLE "subscription_invoices" DROP COLUMN IF EXISTS "stripeCheckoutSessionId";
DROP INDEX IF EXISTS "rental_payments_stripeCheckoutSessionId_key";
DROP INDEX IF EXISTS "rental_payments_stripePaymentIntentId_key";
ALTER TABLE "rental_payments" DROP COLUMN IF EXISTS "stripeCheckoutSessionId";
ALTER TABLE "rental_payments" DROP COLUMN IF EXISTS "stripePaymentIntentId";
-- Recreate SubscriptionCollectionMethod without STRIPE (DROP VALUE is not allowed in a Prisma transaction).
DO $$
BEGIN
IF EXISTS (
SELECT 1
FROM pg_type t
JOIN pg_enum e ON e.enumtypid = t.oid
WHERE t.typname = 'SubscriptionCollectionMethod'
AND e.enumlabel = 'STRIPE'
) THEN
DROP TYPE IF EXISTS "SubscriptionCollectionMethod_new";
CREATE TYPE "SubscriptionCollectionMethod_new" AS ENUM ('BANK_TRANSFER', 'CHECK');
ALTER TABLE "billing_invoices" ALTER COLUMN "collectionMethod" DROP DEFAULT;
ALTER TABLE "billing_invoices"
ALTER COLUMN "collectionMethod" TYPE "SubscriptionCollectionMethod_new"
USING ("collectionMethod"::text::"SubscriptionCollectionMethod_new");
DROP TYPE "SubscriptionCollectionMethod";
ALTER TYPE "SubscriptionCollectionMethod_new" RENAME TO "SubscriptionCollectionMethod";
ALTER TABLE "billing_invoices" ALTER COLUMN "collectionMethod" SET DEFAULT 'BANK_TRANSFER';
END IF;
END $$;
-- Recreate PaymentProvider without STRIPE.
DO $$
BEGIN
IF EXISTS (
SELECT 1
FROM pg_type t
JOIN pg_enum e ON e.enumtypid = t.oid
WHERE t.typname = 'PaymentProvider'
AND e.enumlabel = 'STRIPE'
) THEN
DROP TYPE IF EXISTS "PaymentProvider_new";
CREATE TYPE "PaymentProvider_new" AS ENUM ('AMANPAY', 'PAYPAL', 'MANUAL');
ALTER TABLE "billing_invoices" ALTER COLUMN "paymentProvider" DROP DEFAULT;
ALTER TABLE "subscription_invoices" ALTER COLUMN "paymentProvider" DROP DEFAULT;
ALTER TABLE "rental_payments" ALTER COLUMN "paymentProvider" DROP DEFAULT;
ALTER TABLE "billing_invoices"
ALTER COLUMN "paymentProvider" TYPE "PaymentProvider_new"
USING ("paymentProvider"::text::"PaymentProvider_new");
ALTER TABLE "subscription_invoices"
ALTER COLUMN "paymentProvider" TYPE "PaymentProvider_new"
USING ("paymentProvider"::text::"PaymentProvider_new");
ALTER TABLE "rental_payments"
ALTER COLUMN "paymentProvider" TYPE "PaymentProvider_new"
USING ("paymentProvider"::text::"PaymentProvider_new");
IF EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_schema = 'public'
AND table_name = 'brand_settings'
AND column_name = 'paymentMethodsEnabled'
) THEN
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'
),
ARRAY[]::"PaymentProvider_new"[]
)
);
END IF;
DROP TYPE "PaymentProvider";
ALTER TYPE "PaymentProvider_new" RENAME TO "PaymentProvider";
ALTER TABLE "subscription_invoices" ALTER COLUMN "paymentProvider" SET DEFAULT 'AMANPAY';
END IF;
END $$;
@@ -0,0 +1,66 @@
-- Remap online gateway rows to manual before dropping provider values.
UPDATE "billing_invoices"
SET "paymentProvider" = 'MANUAL'
WHERE "paymentProvider"::text IN ('AMANPAY', 'PAYPAL', 'STRIPE');
UPDATE "subscription_invoices"
SET "paymentProvider" = 'MANUAL'
WHERE "paymentProvider"::text IN ('AMANPAY', 'PAYPAL', 'STRIPE');
UPDATE "rental_payments"
SET "paymentProvider" = 'MANUAL'
WHERE "paymentProvider"::text IN ('AMANPAY', 'PAYPAL', 'STRIPE');
DROP INDEX IF EXISTS "subscription_invoices_amanpayTransactionId_key";
DROP INDEX IF EXISTS "subscription_invoices_paypalCaptureId_key";
ALTER TABLE "subscription_invoices" DROP COLUMN IF EXISTS "amanpayTransactionId";
ALTER TABLE "subscription_invoices" DROP COLUMN IF EXISTS "paypalCaptureId";
DROP INDEX IF EXISTS "rental_payments_amanpayTransactionId_key";
DROP INDEX IF EXISTS "rental_payments_paypalCaptureId_key";
ALTER TABLE "rental_payments" DROP COLUMN IF EXISTS "amanpayTransactionId";
ALTER TABLE "rental_payments" DROP COLUMN IF EXISTS "paypalCaptureId";
ALTER TABLE "brand_settings" DROP COLUMN IF EXISTS "amanpayMerchantId";
ALTER TABLE "brand_settings" DROP COLUMN IF EXISTS "amanpaySecretKey";
ALTER TABLE "brand_settings" DROP COLUMN IF EXISTS "paypalEmail";
ALTER TABLE "brand_settings" DROP COLUMN IF EXISTS "paypalMerchantId";
ALTER TABLE "brand_settings" DROP COLUMN IF EXISTS "paymentMethodsEnabled";
ALTER TABLE "subscription_invoices" ALTER COLUMN "paymentProvider" DROP DEFAULT;
ALTER TABLE "subscription_invoices" ALTER COLUMN "paymentProvider" SET DEFAULT 'MANUAL';
DO $$
BEGIN
IF EXISTS (
SELECT 1
FROM pg_type t
JOIN pg_enum e ON e.enumtypid = t.oid
WHERE t.typname = 'PaymentProvider'
AND e.enumlabel IN ('AMANPAY', 'PAYPAL', 'STRIPE')
) THEN
DROP TYPE IF EXISTS "PaymentProvider_new";
CREATE TYPE "PaymentProvider_new" AS ENUM ('MANUAL');
ALTER TABLE "billing_invoices" ALTER COLUMN "paymentProvider" DROP DEFAULT;
ALTER TABLE "subscription_invoices" ALTER COLUMN "paymentProvider" DROP DEFAULT;
ALTER TABLE "rental_payments" ALTER COLUMN "paymentProvider" DROP DEFAULT;
ALTER TABLE "billing_invoices"
ALTER COLUMN "paymentProvider" TYPE "PaymentProvider_new"
USING ("paymentProvider"::text::"PaymentProvider_new");
ALTER TABLE "subscription_invoices"
ALTER COLUMN "paymentProvider" TYPE "PaymentProvider_new"
USING ("paymentProvider"::text::"PaymentProvider_new");
ALTER TABLE "rental_payments"
ALTER COLUMN "paymentProvider" TYPE "PaymentProvider_new"
USING ("paymentProvider"::text::"PaymentProvider_new");
DROP TYPE "PaymentProvider";
ALTER TYPE "PaymentProvider_new" RENAME TO "PaymentProvider";
ALTER TABLE "subscription_invoices" ALTER COLUMN "paymentProvider" SET DEFAULT 'MANUAL';
END IF;
END $$;
@@ -0,0 +1,25 @@
-- Keep only bank transfer and check as stored billing payment method types.
UPDATE "billing_payment_methods"
SET "type" = 'BANK_TRANSFER'
WHERE "type"::text IN ('CARD', 'ACH_DEBIT', 'WIRE_TRANSFER', 'MANUAL_INVOICE', 'PURCHASE_ORDER');
DO $$
BEGIN
IF EXISTS (
SELECT 1
FROM pg_type t
JOIN pg_enum e ON e.enumtypid = t.oid
WHERE t.typname = 'BillingPaymentMethodType'
AND e.enumlabel IN ('CARD', 'ACH_DEBIT', 'WIRE_TRANSFER', 'MANUAL_INVOICE', 'PURCHASE_ORDER')
) THEN
DROP TYPE IF EXISTS "BillingPaymentMethodType_new";
CREATE TYPE "BillingPaymentMethodType_new" AS ENUM ('BANK_TRANSFER', 'CHECK');
ALTER TABLE "billing_payment_methods"
ALTER COLUMN "type" TYPE "BillingPaymentMethodType_new"
USING ("type"::text::"BillingPaymentMethodType_new");
DROP TYPE "BillingPaymentMethodType";
ALTER TYPE "BillingPaymentMethodType_new" RENAME TO "BillingPaymentMethodType";
END IF;
END $$;
+3 -23
View File
@@ -126,12 +126,8 @@ enum BillingLineItemType {
}
enum BillingPaymentMethodType {
CARD
ACH_DEBIT
BANK_TRANSFER
WIRE_TRANSFER
MANUAL_INVOICE
PURCHASE_ORDER
CHECK
}
enum BillingPaymentIntentStatus {
@@ -157,7 +153,6 @@ enum BillingPaymentAttemptStatus {
}
enum SubscriptionCollectionMethod {
STRIPE
BANK_TRANSFER
CHECK
}
@@ -244,9 +239,6 @@ enum BillingCreditNoteStatus {
}
enum PaymentProvider {
AMANPAY
PAYPAL
STRIPE
MANUAL
}
@@ -754,10 +746,7 @@ model SubscriptionInvoice {
amount Int
currency String @default("MAD")
status InvoiceStatus
amanpayTransactionId String? @unique
paypalCaptureId String? @unique
stripeCheckoutSessionId String? @unique
paymentProvider PaymentProvider @default(AMANPAY)
paymentProvider PaymentProvider @default(MANUAL)
billingInvoiceId String? @unique
billingInvoice BillingInvoice? @relation(fields: [billingInvoiceId], references: [id])
dueAt DateTime?
@@ -903,7 +892,7 @@ model BillingInvoice {
billingAddress Json?
providerInvoiceId String?
paymentProvider PaymentProvider?
collectionMethod SubscriptionCollectionMethod @default(STRIPE)
collectionMethod SubscriptionCollectionMethod @default(BANK_TRANSFER)
requestedPlan Plan?
requestedBillingPeriod BillingPeriod?
checkoutIdempotencyKey String?
@@ -1468,11 +1457,6 @@ model BrandSettings {
instagramUrl String?
defaultLocale String @default("en")
defaultCurrency String @default("MAD")
amanpayMerchantId String?
amanpaySecretKey String?
paypalEmail String?
paypalMerchantId String?
paymentMethodsEnabled PaymentProvider[]
isListedOnCarplace Boolean @default(true)
carplaceRating Float?
homePageConfig Json? @map("home_page_config")
@@ -1900,10 +1884,6 @@ model RentalPayment {
status PaymentStatus @default(PENDING)
type PaymentType @default(CHARGE)
paymentProvider PaymentProvider
amanpayTransactionId String? @unique
paypalCaptureId String? @unique
stripeCheckoutSessionId String? @unique
stripePaymentIntentId String? @unique
paymentMethod String?
reference String?
note String?