feat: Region PaymentProvider link (#6577)

**What**

- Introduce link between Region and PaymentProvider
- Introduce API endpoint `GET /store/regions/:id/payment-providers` for retrieving providers by region
- Add tests for both
This commit is contained in:
Oli Juhl
2024-03-05 10:40:25 +01:00
committed by GitHub
parent 82db53c99e
commit 7d69e6068e
14 changed files with 371 additions and 43 deletions

View File

@@ -10,3 +10,5 @@ export * from "./product-shipping-profile"
export * from "./product-variant-inventory-item"
export * from "./product-variant-price-set"
export * from "./publishable-api-key-sales-channel"
export * from "./region-payment-provider"

View File

@@ -0,0 +1,64 @@
import { Modules } from "@medusajs/modules-sdk"
import { ModuleJoinerConfig } from "@medusajs/types"
import { LINKS } from "../links"
export const RegionPaymentProvider: ModuleJoinerConfig = {
serviceName: LINKS.RegionPaymentProvider,
isLink: true,
databaseConfig: {
tableName: "region_payment_provider",
idPrefix: "regpp",
},
alias: [
{
name: ["region_payment_provider", "region_payment_providers"],
args: {
entity: "LinkRegionPaymentProvider",
},
},
],
primaryKeys: ["id", "region_id", "payment_provider_id"],
relationships: [
{
serviceName: Modules.REGION,
primaryKey: "id",
foreignKey: "region_id",
alias: "region",
},
{
serviceName: Modules.PAYMENT,
primaryKey: "id",
foreignKey: "payment_provider_id",
alias: "payment_provider",
args: { methodSuffix: "PaymentProviders" },
},
],
extends: [
{
serviceName: Modules.REGION,
fieldAlias: {
payment_providers: "payment_provider_link.payment_provider",
},
relationship: {
serviceName: LINKS.RegionPaymentProvider,
primaryKey: "region_id",
foreignKey: "id",
alias: "payment_provider_link",
isList: true,
},
},
{
serviceName: Modules.PAYMENT,
fieldAlias: {
regions: "region_link.region",
},
relationship: {
serviceName: LINKS.RegionPaymentProvider,
primaryKey: "payment_provider_id",
foreignKey: "id",
alias: "region_link",
isList: true,
},
},
],
}

View File

@@ -20,6 +20,12 @@ export const LINKS = {
Modules.PAYMENT,
"payment_collection_id"
),
RegionPaymentProvider: composeLinkName(
Modules.REGION,
"region_id",
Modules.PAYMENT,
"payment_provider_id"
),
CartPromotion: composeLinkName(
Modules.CART,
"cart_id",