From 2188a4e1ba5fd8f208296a36c0f2f9412e9f199e Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Wed, 24 Jul 2024 10:18:38 +0200 Subject: [PATCH] fix: `isList` on field alias in link configuration (#8244) * fix/link-configuration-is-list-on-fieldsAlias * fix tests * fix tests * fix tests --- .../link-modules/define-link.spec.ts | 40 +++++++++++++++---- .../core/utils/src/modules-sdk/define-link.ts | 12 ++++-- .../src/definitions/cart-promotion.ts | 5 ++- .../definitions/fulfillment-set-location.ts | 5 ++- .../src/definitions/order-fulfillment.ts | 5 ++- .../src/definitions/product-sales-channel.ts | 5 ++- .../product-variant-inventory-item.ts | 5 ++- .../definitions/product-variant-price-set.ts | 5 ++- .../publishable-api-key-sales-channel.ts | 10 ++++- .../definitions/region-payment-provider.ts | 10 ++++- .../src/definitions/sales-channel-location.ts | 10 ++++- 11 files changed, 88 insertions(+), 24 deletions(-) diff --git a/integration-tests/modules/__tests__/link-modules/define-link.spec.ts b/integration-tests/modules/__tests__/link-modules/define-link.spec.ts index 2148b60d77..36f8bb2c88 100644 --- a/integration-tests/modules/__tests__/link-modules/define-link.spec.ts +++ b/integration-tests/modules/__tests__/link-modules/define-link.spec.ts @@ -66,7 +66,10 @@ medusaIntegrationTestRunner({ { serviceName: "currency", fieldAlias: { - region: "region_link.region", + region: { + path: "region_link.region", + isList: false, + }, }, relationship: { serviceName: "currencyCurrencyRegionRegionLink", @@ -79,7 +82,10 @@ medusaIntegrationTestRunner({ { serviceName: "region", fieldAlias: { - currency: "currency_link.currency", + currency: { + path: "currency_link.currency", + isList: false, + }, }, relationship: { serviceName: "currencyCurrencyRegionRegionLink", @@ -151,7 +157,10 @@ medusaIntegrationTestRunner({ { serviceName: "productService", fieldAlias: { - region: "region_link.region", + region: { + path: "region_link.region", + isList: false, + }, }, relationship: { serviceName: "productProductVariantRegionRegionLink", @@ -164,7 +173,10 @@ medusaIntegrationTestRunner({ { serviceName: "region", fieldAlias: { - product_variant: "product_variant_link.product_variant", + product_variant: { + path: "product_variant_link.product_variant", + isList: false, + }, }, relationship: { serviceName: "productProductVariantRegionRegionLink", @@ -239,7 +251,10 @@ medusaIntegrationTestRunner({ { serviceName: "currency", fieldAlias: { - region: "region_link.region", + region: { + path: "region_link.region", + isList: false, + }, }, relationship: { serviceName: "currencyCurrencyRegionRegionLink", @@ -252,7 +267,10 @@ medusaIntegrationTestRunner({ { serviceName: "region", fieldAlias: { - currency: "currency_link.currency", + currency: { + path: "currency_link.currency", + isList: false, + }, }, relationship: { serviceName: "currencyCurrencyRegionRegionLink", @@ -323,7 +341,10 @@ medusaIntegrationTestRunner({ { serviceName: "currency", fieldAlias: { - regions: "region_link.region", + regions: { + path: "region_link.region", + isList: true, + }, }, relationship: { serviceName: "currencyCurrencyRegionRegionLink", @@ -336,7 +357,10 @@ medusaIntegrationTestRunner({ { serviceName: "region", fieldAlias: { - currency: "currency_link.currency", + currency: { + path: "currency_link.currency", + isList: false, + }, }, relationship: { serviceName: "currencyCurrencyRegionRegionLink", diff --git a/packages/core/utils/src/modules-sdk/define-link.ts b/packages/core/utils/src/modules-sdk/define-link.ts index 62e6a8f73a..68a508f983 100644 --- a/packages/core/utils/src/modules-sdk/define-link.ts +++ b/packages/core/utils/src/modules-sdk/define-link.ts @@ -313,8 +313,10 @@ ${serviceBObj.module}: { { serviceName: serviceAObj.module, fieldAlias: { - [serviceBObj.isList ? pluralize(aliasB) : aliasB]: - aliasB + "_link." + aliasB, + [serviceBObj.isList ? pluralize(aliasB) : aliasB]: { + path: aliasB + "_link." + aliasB, + isList: serviceBObj.isList, + }, }, relationship: { serviceName: output.serviceName, @@ -327,8 +329,10 @@ ${serviceBObj.module}: { { serviceName: serviceBObj.module, fieldAlias: { - [serviceAObj.isList ? pluralize(aliasA) : aliasA]: - aliasA + "_link." + aliasA, + [serviceAObj.isList ? pluralize(aliasA) : aliasA]: { + path: aliasA + "_link." + aliasA, + isList: serviceAObj.isList, + }, }, relationship: { serviceName: output.serviceName, diff --git a/packages/modules/link-modules/src/definitions/cart-promotion.ts b/packages/modules/link-modules/src/definitions/cart-promotion.ts index 11e04c9ec9..88d26e4606 100644 --- a/packages/modules/link-modules/src/definitions/cart-promotion.ts +++ b/packages/modules/link-modules/src/definitions/cart-promotion.ts @@ -41,7 +41,10 @@ export const CartPromotion: ModuleJoinerConfig = { { serviceName: Modules.CART, fieldAlias: { - promotions: "cart_link.promotions", + promotions: { + path: "cart_link.promotions", + isList: true, + }, }, relationship: { serviceName: LINKS.CartPromotion, diff --git a/packages/modules/link-modules/src/definitions/fulfillment-set-location.ts b/packages/modules/link-modules/src/definitions/fulfillment-set-location.ts index 448587feed..dc5a36c4c0 100644 --- a/packages/modules/link-modules/src/definitions/fulfillment-set-location.ts +++ b/packages/modules/link-modules/src/definitions/fulfillment-set-location.ts @@ -49,7 +49,10 @@ export const LocationFulfillmentSet: ModuleJoinerConfig = { isList: true, }, fieldAlias: { - fulfillment_sets: "fulfillment_set_link.fulfillment_set", + fulfillment_sets: { + path: "fulfillment_set_link.fulfillment_set", + isList: true, + }, }, }, { diff --git a/packages/modules/link-modules/src/definitions/order-fulfillment.ts b/packages/modules/link-modules/src/definitions/order-fulfillment.ts index aa1d33b6ca..be82c5662e 100644 --- a/packages/modules/link-modules/src/definitions/order-fulfillment.ts +++ b/packages/modules/link-modules/src/definitions/order-fulfillment.ts @@ -42,7 +42,10 @@ export const OrderFulfillment: ModuleJoinerConfig = { { serviceName: Modules.ORDER, fieldAlias: { - fulfillments: "fulfillment_link.fulfillments", + fulfillments: { + path: "fulfillment_link.fulfillments", + isList: true, + }, }, relationship: { serviceName: LINKS.OrderFulfillment, diff --git a/packages/modules/link-modules/src/definitions/product-sales-channel.ts b/packages/modules/link-modules/src/definitions/product-sales-channel.ts index f331b34375..cead75634a 100644 --- a/packages/modules/link-modules/src/definitions/product-sales-channel.ts +++ b/packages/modules/link-modules/src/definitions/product-sales-channel.ts @@ -41,7 +41,10 @@ export const ProductSalesChannel: ModuleJoinerConfig = { { serviceName: Modules.PRODUCT, fieldAlias: { - sales_channels: "sales_channels_link.sales_channel", + sales_channels: { + path: "sales_channels_link.sales_channel", + isList: true, + }, }, relationship: { serviceName: LINKS.ProductSalesChannel, diff --git a/packages/modules/link-modules/src/definitions/product-variant-inventory-item.ts b/packages/modules/link-modules/src/definitions/product-variant-inventory-item.ts index e164162ed4..bc97b0a783 100644 --- a/packages/modules/link-modules/src/definitions/product-variant-inventory-item.ts +++ b/packages/modules/link-modules/src/definitions/product-variant-inventory-item.ts @@ -64,7 +64,10 @@ export const ProductVariantInventoryItem: ModuleJoinerConfig = { { serviceName: Modules.INVENTORY, fieldAlias: { - variants: "variant_link.variant", + variants: { + path: "variant_link.variant", + isList: true, + }, }, relationship: { serviceName: LINKS.ProductVariantInventoryItem, diff --git a/packages/modules/link-modules/src/definitions/product-variant-price-set.ts b/packages/modules/link-modules/src/definitions/product-variant-price-set.ts index b712724b4a..8124afd314 100644 --- a/packages/modules/link-modules/src/definitions/product-variant-price-set.ts +++ b/packages/modules/link-modules/src/definitions/product-variant-price-set.ts @@ -43,7 +43,10 @@ export const ProductVariantPriceSet: ModuleJoinerConfig = { serviceName: Modules.PRODUCT, fieldAlias: { price_set: "price_set_link.price_set", - prices: "price_set_link.price_set.prices", + prices: { + path: "price_set_link.price_set.prices", + isList: true, + }, calculated_price: { path: "price_set_link.price_set.calculated_price", forwardArgumentsOnPath: ["price_set_link.price_set"], diff --git a/packages/modules/link-modules/src/definitions/publishable-api-key-sales-channel.ts b/packages/modules/link-modules/src/definitions/publishable-api-key-sales-channel.ts index 65403be53d..e24447552d 100644 --- a/packages/modules/link-modules/src/definitions/publishable-api-key-sales-channel.ts +++ b/packages/modules/link-modules/src/definitions/publishable-api-key-sales-channel.ts @@ -41,7 +41,10 @@ export const PublishableApiKeySalesChannel: ModuleJoinerConfig = { { serviceName: Modules.API_KEY, fieldAlias: { - sales_channels: "sales_channels_link.sales_channel", + sales_channels: { + path: "sales_channels_link.sales_channel", + isList: true, + }, }, relationship: { serviceName: LINKS.PublishableApiKeySalesChannel, @@ -54,7 +57,10 @@ export const PublishableApiKeySalesChannel: ModuleJoinerConfig = { { serviceName: Modules.SALES_CHANNEL, fieldAlias: { - publishable_api_keys: "api_keys_link.api_key", + publishable_api_keys: { + path: "api_keys_link.api_key", + isList: true, + }, }, relationship: { serviceName: LINKS.PublishableApiKeySalesChannel, diff --git a/packages/modules/link-modules/src/definitions/region-payment-provider.ts b/packages/modules/link-modules/src/definitions/region-payment-provider.ts index fcf41ae41d..00c1dfd137 100644 --- a/packages/modules/link-modules/src/definitions/region-payment-provider.ts +++ b/packages/modules/link-modules/src/definitions/region-payment-provider.ts @@ -39,7 +39,10 @@ export const RegionPaymentProvider: ModuleJoinerConfig = { { serviceName: Modules.REGION, fieldAlias: { - payment_providers: "payment_provider_link.payment_provider", + payment_providers: { + path: "payment_provider_link.payment_provider", + isList: true, + }, }, relationship: { serviceName: LINKS.RegionPaymentProvider, @@ -52,7 +55,10 @@ export const RegionPaymentProvider: ModuleJoinerConfig = { { serviceName: Modules.PAYMENT, fieldAlias: { - regions: "region_link.region", + regions: { + path: "region_link.region", + isList: true, + }, }, relationship: { serviceName: LINKS.RegionPaymentProvider, diff --git a/packages/modules/link-modules/src/definitions/sales-channel-location.ts b/packages/modules/link-modules/src/definitions/sales-channel-location.ts index a5242cbb16..df4863b14a 100644 --- a/packages/modules/link-modules/src/definitions/sales-channel-location.ts +++ b/packages/modules/link-modules/src/definitions/sales-channel-location.ts @@ -41,7 +41,10 @@ export const SalesChannelLocation: ModuleJoinerConfig = { { serviceName: Modules.SALES_CHANNEL, fieldAlias: { - stock_locations: "locations_link.location", + stock_locations: { + path: "locations_link.location", + isList: true, + }, }, relationship: { serviceName: LINKS.SalesChannelLocation, @@ -54,7 +57,10 @@ export const SalesChannelLocation: ModuleJoinerConfig = { { serviceName: Modules.STOCK_LOCATION, fieldAlias: { - sales_channels: "sales_channels_link.sales_channel", + sales_channels: { + path: "sales_channels_link.sales_channel", + isList: true, + }, }, relationship: { serviceName: LINKS.SalesChannelLocation,