From da8e17397407c08ea66f5b7ba6bd773bdb1ae88f Mon Sep 17 00:00:00 2001 From: Stevche Radevski Date: Thu, 16 Jan 2025 10:10:03 +0100 Subject: [PATCH] feat: Remove fields from payment models that were leftovers from v1 (#10987) --- .../payment/payment-session.workflows.spec.ts | 4 -- .../cart/steps/create-payment-collection.ts | 10 +--- .../create-payment-collection-for-cart.ts | 21 +++---- .../workflows/refresh-payment-collection.ts | 1 - .../create-order-payment-collection.ts | 1 - .../core/types/src/http/payment/common.ts | 25 -------- packages/core/types/src/payment/common.ts | 57 +----------------- packages/core/types/src/payment/mutations.ts | 55 ------------------ packages/core/types/src/payment/service.ts | 11 +--- .../integration-tests/__fixtures__/data.ts | 3 - .../__tests__/loaders/providers.spec.ts | 3 +- .../services/payment-module/index.spec.ts | 58 +------------------ .../migrations/.snapshot-medusa-payment.json | 44 -------------- .../src/migrations/Migration20250115160517.ts | 21 +++++++ .../payment/src/models/payment-collection.ts | 7 --- .../modules/payment/src/models/payment.ts | 3 - 16 files changed, 37 insertions(+), 287 deletions(-) create mode 100644 packages/modules/payment/src/migrations/Migration20250115160517.ts diff --git a/integration-tests/modules/__tests__/payment/payment-session.workflows.spec.ts b/integration-tests/modules/__tests__/payment/payment-session.workflows.spec.ts index ecfd2d21ad..355995ff91 100644 --- a/integration-tests/modules/__tests__/payment/payment-session.workflows.spec.ts +++ b/integration-tests/modules/__tests__/payment/payment-session.workflows.spec.ts @@ -39,7 +39,6 @@ medusaIntegrationTestRunner({ paymentCollection = await paymentModule.createPaymentCollections({ currency_code: "usd", amount: 1000, - region_id: region.id, }) }) @@ -65,7 +64,6 @@ medusaIntegrationTestRunner({ id: paymentCollection.id, currency_code: "usd", amount: 1000, - region_id: region.id, payment_sessions: expect.arrayContaining([ expect.objectContaining({ amount: 1000, @@ -106,7 +104,6 @@ medusaIntegrationTestRunner({ id: paymentCollection.id, currency_code: "usd", amount: 1000, - region_id: region.id, payment_sessions: [ expect.objectContaining({ amount: 1000, @@ -139,7 +136,6 @@ medusaIntegrationTestRunner({ await paymentModule.createPaymentCollections({ currency_code: "usd", amount: 1000, - region_id: region.id, }) const { errors } = await workflow.run({ diff --git a/packages/core/core-flows/src/cart/steps/create-payment-collection.ts b/packages/core/core-flows/src/cart/steps/create-payment-collection.ts index 9d7b2ecd99..f1afe8a447 100644 --- a/packages/core/core-flows/src/cart/steps/create-payment-collection.ts +++ b/packages/core/core-flows/src/cart/steps/create-payment-collection.ts @@ -9,13 +9,6 @@ import { StepResponse, createStep } from "@medusajs/framework/workflows-sdk" * The details of the payment collections to create. */ export type CreatePaymentCollectionCartStepInput = { - /** - * The ID of the region that the payment collection belongs to. - */ - region_id: string - /** - * The payment collection's curency code. - */ currency_code: string /** * The payment collection's amount. @@ -30,10 +23,9 @@ export type CreatePaymentCollectionCartStepInput = { export const createPaymentCollectionsStepId = "create-payment-collections" /** * This step creates payment collections in a cart. - * + * * @example * const data = createPaymentCollectionsStep([{ - * "region_id": "region_123", * "currency_code": "usd", * "amount": 40 * }]) diff --git a/packages/core/core-flows/src/cart/workflows/create-payment-collection-for-cart.ts b/packages/core/core-flows/src/cart/workflows/create-payment-collection-for-cart.ts index 4d2962152e..6e4645a44b 100644 --- a/packages/core/core-flows/src/cart/workflows/create-payment-collection-for-cart.ts +++ b/packages/core/core-flows/src/cart/workflows/create-payment-collection-for-cart.ts @@ -28,13 +28,13 @@ export type ValidateExistingPaymentCollectionStepInput = { /** * This step validates that a cart doesn't have a payment collection. * If the cart has a payment collection, the step throws an error. - * + * * :::tip - * + * * You can use the {@link retrieveCartStep} to retrieve a cart's details. - * + * * ::: - * + * * @example * const data = validateExistingPaymentCollectionStep({ * cart: { @@ -58,11 +58,11 @@ export const validateExistingPaymentCollectionStep = createStep( export const createPaymentCollectionForCartWorkflowId = "create-payment-collection-for-cart" /** - * This workflow creates a payment collection for a cart. It's executed by the + * This workflow creates a payment collection for a cart. It's executed by the * [Create Payment Collection Store API Route](https://docs.medusajs.com/api/store#payment-collections_postpaymentcollections). - * + * * You can use this workflow within your own custom workflows, allowing you to wrap custom logic around adding creating a payment collection for a cart. - * + * * @example * const { result } = await createPaymentCollectionForCartWorkflow(container) * .run({ @@ -73,9 +73,9 @@ export const createPaymentCollectionForCartWorkflowId = * } * } * }) - * + * * @summary - * + * * Create payment collection for cart. */ export const createPaymentCollectionForCartWorkflow = createWorkflow( @@ -87,7 +87,6 @@ export const createPaymentCollectionForCartWorkflow = createWorkflow( entry_point: "cart", fields: [ "id", - "region_id", "completed_at", "currency_code", "total", @@ -106,10 +105,8 @@ export const createPaymentCollectionForCartWorkflow = createWorkflow( const paymentData = transform({ cart }, ({ cart }) => { return { - cart_id: cart.id, currency_code: cart.currency_code, amount: cart.raw_total, - region_id: cart.region_id, } }) diff --git a/packages/core/core-flows/src/cart/workflows/refresh-payment-collection.ts b/packages/core/core-flows/src/cart/workflows/refresh-payment-collection.ts index 619c9224f3..9bae6a66cb 100644 --- a/packages/core/core-flows/src/cart/workflows/refresh-payment-collection.ts +++ b/packages/core/core-flows/src/cart/workflows/refresh-payment-collection.ts @@ -108,7 +108,6 @@ export const refreshPaymentCollectionForCartWorkflow = createWorkflow( update: { amount: cart.total, currency_code: cart.currency_code, - region_id: cart.region_id, }, } }) diff --git a/packages/core/core-flows/src/order/workflows/create-order-payment-collection.ts b/packages/core/core-flows/src/order/workflows/create-order-payment-collection.ts index 663849617f..c522bf551f 100644 --- a/packages/core/core-flows/src/order/workflows/create-order-payment-collection.ts +++ b/packages/core/core-flows/src/order/workflows/create-order-payment-collection.ts @@ -63,7 +63,6 @@ export const createOrderPaymentCollectionWorkflow = createWorkflow( return { currency_code: order.currency_code, amount: input.amount, - region_id: order.region_id, } } ) diff --git a/packages/core/types/src/http/payment/common.ts b/packages/core/types/src/http/payment/common.ts index 3e1ae5c023..7aec966873 100644 --- a/packages/core/types/src/http/payment/common.ts +++ b/packages/core/types/src/http/payment/common.ts @@ -43,11 +43,6 @@ export interface BasePaymentCollection { */ currency_code: string - /** - * The id of the associated region. - */ - region_id: string - /** * The total amount to be authorized and captured. */ @@ -141,26 +136,6 @@ export interface BasePayment { */ provider_id: string - /** - * The ID of the associated cart. - */ - cart_id?: string - - /** - * The ID of the associated order. - */ - order_id?: string - - /** - * The ID of the associated order edit. - */ - order_edit_id?: string - - /** - * The ID of the associated customer. - */ - customer_id?: string - /** * The data relevant for the payment provider to process the payment. */ diff --git a/packages/core/types/src/payment/common.ts b/packages/core/types/src/payment/common.ts index 0d668a1bf5..e9ac20f0d6 100644 --- a/packages/core/types/src/payment/common.ts +++ b/packages/core/types/src/payment/common.ts @@ -32,11 +32,6 @@ export interface PaymentCollectionDTO { */ currency_code: string - /** - * The id of the associated region. - */ - region_id: string - /** * The total amount to be authorized and captured. */ @@ -114,11 +109,6 @@ export interface FilterablePaymentCollectionProps */ id?: string | string[] - /** - * Filter by associated region's ID. - */ - region_id?: string | string[] | OperatorMap - /** * Filter payment collections by created date. */ @@ -160,11 +150,6 @@ export interface FilterablePaymentSessionProps */ payment_collection_id?: string | string[] - /** - * Filter the payment sessions by the ID of their associated region. - */ - region_id?: string | string[] | OperatorMap - /** * Filter the payment sessions by their creation date. */ @@ -297,26 +282,6 @@ export interface PaymentDTO { */ provider_id: string - /** - * The ID of the associated cart. - */ - cart_id?: string - - /** - * The ID of the associated order. - */ - order_id?: string - - /** - * The ID of the associated order edit. - */ - order_edit_id?: string - - /** - * The ID of the associated customer. - */ - customer_id?: string - /** * The data relevant for the payment provider to process the payment. */ @@ -402,7 +367,7 @@ export interface PaymentDTO { export interface FilterablePaymentProps extends BaseFilterable { /** - * Find payments based on cart, order, or customer IDs through this search term. + * Find payments based on different fields. */ q?: string @@ -416,26 +381,6 @@ export interface FilterablePaymentProps */ payment_session_id?: string | string[] | OperatorMap - /** - * Filter the payments by the ID of their associated customer. - */ - customer_id?: string | string[] | OperatorMap - - /** - * Filter the payments by the ID of their associated cart. - */ - cart_id?: string | string[] | OperatorMap - - /** - * Filter the payments by the ID of their associated order. - */ - order_id?: string | string[] | OperatorMap - - /** - * Filter the payments by the ID of their associated order edit. - */ - order_edit_id?: string | string[] | OperatorMap - /** * Filter the payments by their creation date. */ diff --git a/packages/core/types/src/payment/mutations.ts b/packages/core/types/src/payment/mutations.ts index b041e61d46..d1bc6c92c7 100644 --- a/packages/core/types/src/payment/mutations.ts +++ b/packages/core/types/src/payment/mutations.ts @@ -6,11 +6,6 @@ import { PaymentProviderContext } from "./provider" * The payment collection to be created. */ export interface CreatePaymentCollectionDTO { - /** - * The associated region's ID. - */ - region_id: string - /** * The ISO 3 character currency code of the payment collection. */ @@ -47,11 +42,6 @@ export interface UpsertPaymentCollectionDTO { */ id?: string - /** - * The associated region's ID. - */ - region_id?: string - /** * The ISO 3 character currency code of the payment collection. */ @@ -72,11 +62,6 @@ export interface UpsertPaymentCollectionDTO { * The attributes to update in the payment collection. */ export interface PaymentCollectionUpdatableFields { - /** - * The associated region's ID. - */ - region_id?: string - /** * The ISO 3 character currency code of the payment collection. */ @@ -131,26 +116,6 @@ export interface CreatePaymentDTO { * The associated payment collection's ID. */ payment_collection_id: string - - /** - * The associated cart's ID. - */ - cart_id?: string - - /** - * The associated order's ID. - */ - order_id?: string - - /** - * The associated order edit's ID. - */ - order_edit_id?: string - - /** - * The associated customer's ID. - */ - customer_id?: string } /** @@ -161,26 +126,6 @@ export interface UpdatePaymentDTO { * The ID of the payment. */ id: string - - /** - * The associated cart's ID. - */ - cart_id?: string - - /** - * The associated order's ID. - */ - order_id?: string - - /** - * The associated order edit's ID. - */ - order_edit_id?: string - - /** - * The associated customer's ID. - */ - customer_id?: string } /** diff --git a/packages/core/types/src/payment/service.ts b/packages/core/types/src/payment/service.ts index 5d208cfbc1..f19d8b0f40 100644 --- a/packages/core/types/src/payment/service.ts +++ b/packages/core/types/src/payment/service.ts @@ -50,12 +50,10 @@ export interface IPaymentModuleService extends IModuleService { * const paymentCollections = * await paymentModuleService.createPaymentCollections([ * { - * region_id: "reg_123", * currency_code: "usd", * amount: 3000, * }, * { - * region_id: "reg_321", * currency_code: "eur", * amount: 2000, * }, @@ -76,7 +74,6 @@ export interface IPaymentModuleService extends IModuleService { * @example * const paymentCollection = * await paymentModuleService.createPaymentCollections({ - * region_id: "reg_123", * currency_code: "usd", * amount: 3000, * }) @@ -300,10 +297,8 @@ export interface IPaymentModuleService extends IModuleService { * await paymentModuleService.upsertPaymentCollections([ * { * id: "pay_col_123", - * region_id: "reg_123", * }, * { - * region_id: "reg_123", * currency_code: "usd", * amount: 3000, * }, @@ -326,7 +321,6 @@ export interface IPaymentModuleService extends IModuleService { * const paymentCollection = * await paymentModuleService.upsertPaymentCollections({ * id: "pay_col_123", - * region_id: "reg_123", * }) */ upsertPaymentCollections( @@ -652,7 +646,6 @@ export interface IPaymentModuleService extends IModuleService { * @example * const payment = await paymentModuleService.updatePayment({ * id: "pay_123", - * customer_id: "cus_123", * }) */ updatePayment( @@ -1077,7 +1070,9 @@ export interface IPaymentModuleService extends IModuleService { * }) * ``` */ - getWebhookActionAndData(data: ProviderWebhookPayload): Promise + getWebhookActionAndData( + data: ProviderWebhookPayload + ): Promise } /** diff --git a/packages/modules/payment/integration-tests/__fixtures__/data.ts b/packages/modules/payment/integration-tests/__fixtures__/data.ts index 97598ff440..2c087aa1da 100644 --- a/packages/modules/payment/integration-tests/__fixtures__/data.ts +++ b/packages/modules/payment/integration-tests/__fixtures__/data.ts @@ -2,19 +2,16 @@ export const defaultPaymentCollectionData = [ { id: "pay-col-id-1", amount: 100, - region_id: "region-id-1", currency_code: "usd", }, { id: "pay-col-id-2", amount: 200, - region_id: "region-id-1", currency_code: "usd", }, { id: "pay-col-id-3", amount: 300, - region_id: "region-id-2", currency_code: "usd", }, ] diff --git a/packages/modules/payment/integration-tests/__tests__/loaders/providers.spec.ts b/packages/modules/payment/integration-tests/__tests__/loaders/providers.spec.ts index 1f7b4b47b5..3aef8fb412 100644 --- a/packages/modules/payment/integration-tests/__tests__/loaders/providers.spec.ts +++ b/packages/modules/payment/integration-tests/__tests__/loaders/providers.spec.ts @@ -15,7 +15,6 @@ moduleIntegrationTestRunner({ .createPaymentCollections([ { amount: 200, - region_id: "req_123", } as any, ]) .catch((e) => e) @@ -28,7 +27,7 @@ moduleIntegrationTestRunner({ it("should create a payment collection successfully", async () => { const [createdPaymentCollection] = await service.createPaymentCollections([ - { currency_code: "USD", amount: 200, region_id: "reg_123" }, + { currency_code: "USD", amount: 200 }, ]) expect(createdPaymentCollection).toEqual( diff --git a/packages/modules/payment/integration-tests/__tests__/services/payment-module/index.spec.ts b/packages/modules/payment/integration-tests/__tests__/services/payment-module/index.spec.ts index de1ef664c1..a8cdc25b88 100644 --- a/packages/modules/payment/integration-tests/__tests__/services/payment-module/index.spec.ts +++ b/packages/modules/payment/integration-tests/__tests__/services/payment-module/index.spec.ts @@ -90,7 +90,6 @@ moduleIntegrationTestRunner({ let paymentCollection = await service.createPaymentCollections({ currency_code: "usd", amount: 200, - region_id: "reg_123", }) const paymentSession = await service.createPaymentSession( @@ -134,7 +133,6 @@ moduleIntegrationTestRunner({ authorized_amount: 200, captured_amount: 200, status: "authorized", - region_id: "reg_123", deleted_at: null, completed_at: expect.any(Date), payment_sessions: [ @@ -180,7 +178,6 @@ moduleIntegrationTestRunner({ .createPaymentCollections([ { amount: 200, - region_id: "req_123", } as any, ]) .catch((e) => e) @@ -193,7 +190,6 @@ moduleIntegrationTestRunner({ .createPaymentCollections([ { currency_code: "USD", - region_id: "req_123", } as any, ]) .catch((e) => e) @@ -202,25 +198,12 @@ moduleIntegrationTestRunner({ expect(error.message).toContain( "Value for PaymentCollection.amount is required, 'undefined' found" ) - - error = await service - .createPaymentCollections([ - { - currency_code: "USD", - amount: 200, - } as any, - ]) - .catch((e) => e) - - expect(error.message).toContain( - "Value for PaymentCollection.region_id is required, 'undefined' found" - ) }) it("should create a payment collection successfully", async () => { const [createdPaymentCollection] = await service.createPaymentCollections([ - { currency_code: "USD", amount: 200, region_id: "reg_123" }, + { currency_code: "USD", amount: 200 }, ]) expect(createdPaymentCollection).toEqual( @@ -265,7 +248,6 @@ moduleIntegrationTestRunner({ expect.objectContaining({ id: "pay-col-id-2", amount: 200, - region_id: "region-id-1", currency_code: "usd", }) ) @@ -294,57 +276,27 @@ moduleIntegrationTestRunner({ expect.objectContaining({ id: "pay-col-id-1", amount: 100, - region_id: "region-id-1", currency_code: "usd", }), expect.objectContaining({ id: "pay-col-id-2", amount: 200, - region_id: "region-id-1", currency_code: "usd", }), expect.objectContaining({ id: "pay-col-id-3", amount: 300, - region_id: "region-id-2", currency_code: "usd", }), ]) ) }) - - it("should list Payment Collections by region_id", async () => { - let collections = await service.listPaymentCollections( - { - region_id: "region-id-1", - }, - { select: ["id", "amount", "region_id"] } - ) - - expect(collections.length).toEqual(2) - - expect(collections).toEqual( - expect.arrayContaining([ - expect.objectContaining({ - id: "pay-col-id-1", - amount: 100, - region_id: "region-id-1", - }), - expect.objectContaining({ - id: "pay-col-id-2", - amount: 200, - region_id: "region-id-1", - }), - ]) - ) - }) }) describe("update", () => { it("should update a Payment Collection", async () => { await service.updatePaymentCollections("pay-col-id-2", { currency_code: "eur", - region_id: "reg-2", }) const collection = await service.retrievePaymentCollection( @@ -354,7 +306,6 @@ moduleIntegrationTestRunner({ expect(collection).toEqual( expect.objectContaining({ id: "pay-col-id-2", - region_id: "reg-2", currency_code: "eur", }) ) @@ -545,7 +496,6 @@ moduleIntegrationTestRunner({ it("should authorize a payment session", async () => { const collection = await service.createPaymentCollections({ amount: 200, - region_id: "test-region", currency_code: "usd", }) @@ -576,9 +526,6 @@ moduleIntegrationTestRunner({ refunds: [], captures: [], data: {}, - cart_id: null, - order_id: null, - customer_id: null, deleted_at: null, captured_at: null, canceled_at: null, @@ -615,13 +562,11 @@ moduleIntegrationTestRunner({ it("should update a payment successfully", async () => { const updatedPayment = await service.updatePayment({ id: "pay-id-1", - cart_id: "new-cart", }) expect(updatedPayment).toEqual( expect.objectContaining({ id: "pay-id-1", - cart_id: "new-cart", }) ) }) @@ -908,7 +853,6 @@ moduleIntegrationTestRunner({ it("should authorize, capture and refund multiple payment sessions", async () => { const collection = await service.createPaymentCollections({ amount: 500, - region_id: "test-region", currency_code: "usd", }) diff --git a/packages/modules/payment/src/migrations/.snapshot-medusa-payment.json b/packages/modules/payment/src/migrations/.snapshot-medusa-payment.json index c20fabdfa0..2f62d60d1a 100644 --- a/packages/modules/payment/src/migrations/.snapshot-medusa-payment.json +++ b/packages/modules/payment/src/migrations/.snapshot-medusa-payment.json @@ -60,15 +60,6 @@ "nullable": true, "mappedType": "decimal" }, - "region_id": { - "name": "region_id", - "type": "text", - "unsigned": false, - "autoincrement": false, - "primary": false, - "nullable": false, - "mappedType": "text" - }, "completed_at": { "name": "completed_at", "type": "timestamptz", @@ -185,14 +176,6 @@ "unique": false, "expression": "CREATE INDEX IF NOT EXISTS \"IDX_payment_collection_deleted_at\" ON \"payment_collection\" (deleted_at) WHERE deleted_at IS NULL" }, - { - "keyName": "IDX_payment_collection_region_id", - "columnNames": [], - "composite": false, - "primary": false, - "unique": false, - "expression": "CREATE INDEX IF NOT EXISTS \"IDX_payment_collection_region_id\" ON \"payment_collection\" (region_id) WHERE deleted_at IS NULL" - }, { "keyName": "payment_collection_pkey", "columnNames": [ @@ -700,33 +683,6 @@ "nullable": false, "mappedType": "text" }, - "cart_id": { - "name": "cart_id", - "type": "text", - "unsigned": false, - "autoincrement": false, - "primary": false, - "nullable": true, - "mappedType": "text" - }, - "order_id": { - "name": "order_id", - "type": "text", - "unsigned": false, - "autoincrement": false, - "primary": false, - "nullable": true, - "mappedType": "text" - }, - "customer_id": { - "name": "customer_id", - "type": "text", - "unsigned": false, - "autoincrement": false, - "primary": false, - "nullable": true, - "mappedType": "text" - }, "data": { "name": "data", "type": "jsonb", diff --git a/packages/modules/payment/src/migrations/Migration20250115160517.ts b/packages/modules/payment/src/migrations/Migration20250115160517.ts new file mode 100644 index 0000000000..8fdac7de07 --- /dev/null +++ b/packages/modules/payment/src/migrations/Migration20250115160517.ts @@ -0,0 +1,21 @@ +import { Migration } from '@mikro-orm/migrations'; + +export class Migration20250115160517 extends Migration { + + async up(): Promise { + this.addSql('drop index if exists "IDX_payment_collection_region_id";'); + this.addSql('alter table if exists "payment_collection" drop column if exists "region_id";'); + + this.addSql('alter table if exists "payment" drop column if exists "cart_id";'); + this.addSql('alter table if exists "payment" drop column if exists "order_id";'); + this.addSql('alter table if exists "payment" drop column if exists "customer_id";'); + } + + async down(): Promise { + this.addSql('alter table if exists "payment_collection" add column if not exists "region_id" text not null;'); + this.addSql('CREATE INDEX IF NOT EXISTS "IDX_payment_collection_region_id" ON "payment_collection" (region_id) WHERE deleted_at IS NULL;'); + + this.addSql('alter table if exists "payment" add column if not exists "cart_id" text null, add column if not exists "order_id" text null, add column if not exists "customer_id" text null;'); + } + +} diff --git a/packages/modules/payment/src/models/payment-collection.ts b/packages/modules/payment/src/models/payment-collection.ts index 0cac199a8b..9f200539c0 100644 --- a/packages/modules/payment/src/models/payment-collection.ts +++ b/packages/modules/payment/src/models/payment-collection.ts @@ -11,7 +11,6 @@ const PaymentCollection = model authorized_amount: model.bigNumber().nullable(), captured_amount: model.bigNumber().nullable(), refunded_amount: model.bigNumber().nullable(), - region_id: model.text(), completed_at: model.dateTime().nullable(), status: model .enum(PaymentCollectionStatus) @@ -30,11 +29,5 @@ const PaymentCollection = model .cascades({ delete: ["payment_sessions", "payments"], }) - .indexes([ - { - name: "IDX_payment_collection_region_id", - on: ["region_id"], - }, - ]) export default PaymentCollection diff --git a/packages/modules/payment/src/models/payment.ts b/packages/modules/payment/src/models/payment.ts index 894ea3ecde..ad3937eb6e 100644 --- a/packages/modules/payment/src/models/payment.ts +++ b/packages/modules/payment/src/models/payment.ts @@ -10,9 +10,6 @@ const Payment = model amount: model.bigNumber(), currency_code: model.text(), provider_id: model.text(), - cart_id: model.text().searchable().nullable(), - order_id: model.text().searchable().nullable(), - customer_id: model.text().searchable().nullable(), data: model.json().nullable(), metadata: model.json().nullable(), captured_at: model.dateTime().nullable(),