From daecd82a7cdf7315599f464999690414c20d6748 Mon Sep 17 00:00:00 2001 From: Riqwan Thamir Date: Mon, 22 Jan 2024 20:39:26 +0100 Subject: [PATCH] feat(utils): update joiner config for campaigns (#6161) --- .changeset/quiet-cycles-doubt.md | 5 +++ packages/promotion/src/joiner-config.ts | 35 ++++++++++--------- .../src/common/generate-linkable-keys-map.ts | 17 +++++++++ packages/utils/src/common/index.ts | 1 + 4 files changed, 41 insertions(+), 17 deletions(-) create mode 100644 .changeset/quiet-cycles-doubt.md create mode 100644 packages/utils/src/common/generate-linkable-keys-map.ts diff --git a/.changeset/quiet-cycles-doubt.md b/.changeset/quiet-cycles-doubt.md new file mode 100644 index 0000000000..34b2821989 --- /dev/null +++ b/.changeset/quiet-cycles-doubt.md @@ -0,0 +1,5 @@ +--- +"@medusajs/utils": patch +--- + +feat(utils): update joiner config for campaigns diff --git a/packages/promotion/src/joiner-config.ts b/packages/promotion/src/joiner-config.ts index d7e301d7f2..e28a835e8d 100644 --- a/packages/promotion/src/joiner-config.ts +++ b/packages/promotion/src/joiner-config.ts @@ -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", + }, + }, + ], } diff --git a/packages/utils/src/common/generate-linkable-keys-map.ts b/packages/utils/src/common/generate-linkable-keys-map.ts new file mode 100644 index 0000000000..38cae12d1b --- /dev/null +++ b/packages/utils/src/common/generate-linkable-keys-map.ts @@ -0,0 +1,17 @@ +import { MapToConfig } from "./map-object-to" + +export function generateLinkableKeysMap( + linkableKeys: Record +): MapToConfig { + const entityLinkableKeysMap: MapToConfig = {} + + Object.entries(linkableKeys).forEach(([key, value]) => { + entityLinkableKeysMap[value] ??= [] + entityLinkableKeysMap[value].push({ + mapTo: key, + valueFrom: key.split("_").pop()!, + }) + }) + + return entityLinkableKeysMap +} diff --git a/packages/utils/src/common/index.ts b/packages/utils/src/common/index.ts index fab0cae5ba..1c0dd744d4 100644 --- a/packages/utils/src/common/index.ts +++ b/packages/utils/src/common/index.ts @@ -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"