feat(utils): update joiner config for campaigns (#6161)

This commit is contained in:
Riqwan Thamir
2024-01-22 20:39:26 +01:00
committed by GitHub
parent 85efa9b910
commit daecd82a7c
4 changed files with 41 additions and 17 deletions

View File

@@ -0,0 +1,5 @@
---
"@medusajs/utils": patch
---
feat(utils): update joiner config for campaigns

View File

@@ -1,31 +1,32 @@
import { Modules } from "@medusajs/modules-sdk"
import { ModuleJoinerConfig } from "@medusajs/types"
import { MapToConfig } from "@medusajs/utils"
import { Promotion } from "@models"
import { generateLinkableKeysMap } from "@medusajs/utils"
import { Campaign, Promotion } from "@models"
export const LinkableKeys = {
promotion_id: Promotion.name,
campaign_id: Campaign.name,
}
const entityLinkableKeysMap: MapToConfig = {}
Object.entries(LinkableKeys).forEach(([key, value]) => {
entityLinkableKeysMap[value] ??= []
entityLinkableKeysMap[value].push({
mapTo: key,
valueFrom: key.split("_").pop()!,
})
})
export const entityNameToLinkableKeysMap: MapToConfig = entityLinkableKeysMap
export const entityNameToLinkableKeysMap = generateLinkableKeysMap(LinkableKeys)
export const joinerConfig: ModuleJoinerConfig = {
serviceName: Modules.PROMOTION,
primaryKeys: ["id"],
linkableKeys: LinkableKeys,
alias: {
name: ["promotion", "promotions"],
args: {
entity: Promotion.name,
alias: [
{
name: ["promotion", "promotions"],
args: {
entity: Promotion.name,
},
},
},
{
name: ["campaign", "campaigns"],
args: {
entity: Campaign.name,
methodSuffix: "Campaigns",
},
},
],
}

View File

@@ -0,0 +1,17 @@
import { MapToConfig } from "./map-object-to"
export function generateLinkableKeysMap(
linkableKeys: Record<string, string>
): MapToConfig {
const entityLinkableKeysMap: MapToConfig = {}
Object.entries(linkableKeys).forEach(([key, value]) => {
entityLinkableKeysMap[value] ??= []
entityLinkableKeysMap[value].push({
mapTo: key,
valueFrom: key.split("_").pop()!,
})
})
return entityLinkableKeysMap
}

View File

@@ -7,6 +7,7 @@ export * from "./deduplicate"
export * from "./deep-equal-obj"
export * from "./errors"
export * from "./generate-entity-id"
export * from "./generate-linkable-keys-map"
export * from "./get-config-file"
export * from "./get-iso-string-from-date"
export * from "./get-selects-and-relations-from-object-array"