Files
medusa-store/packages/inventory-next/src/joiner-config.ts
Philip Korsholm c19d276458 feat(inventory-next, types): inventory module conversion (#6596)
* init

* create new interface

* prep integration tests

* update denpencies

* inventory service partial tests

* finalize integration tests

* add events

* align events

* adjust inventory level reservation levels

* add test validating reserved quantity after reseration item update

* fix nits

* rename to inventory-next

* update yarn.lock

* remove changelog

* remove fixtures

* remove unused files

* ready for review

* Update packages/inventory-next/package.json

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>

* pr feedback

* add tests and docs for partition-array util

* remote decorators from private method

* fix unit tests

* add migrations

* add foreign keys

* fix build

---------

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2024-03-08 14:09:05 +01:00

61 lines
1.5 KiB
TypeScript

import { InventoryItem, InventoryLevel, ReservationItem } from "./models"
import { MapToConfig } from "@medusajs/utils"
import { ModuleJoinerConfig } from "@medusajs/types"
import { Modules } from "@medusajs/modules-sdk"
import moduleSchema from "./schema"
export const LinkableKeys = {
inventory_item_id: InventoryItem.name,
inventory_level_id: InventoryLevel.name,
reservation_item_id: ReservationItem.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 joinerConfig: ModuleJoinerConfig = {
serviceName: Modules.INVENTORY,
primaryKeys: ["id"],
linkableKeys: {
inventory_item_id: InventoryItem.name,
inventory_level_id: InventoryLevel.name,
reservation_item_id: ReservationItem.name,
},
schema: moduleSchema,
alias: [
{
name: ["inventory_items", "inventory"],
args: {
entity: "InventoryItem",
},
},
{
name: ["inventory_level", "inventory_levels"],
args: {
entity: "InventoryLevel",
methodSuffix: "InventoryLevels",
},
},
{
name: [
"reservation",
"reservations",
"reservation_item",
"reservation_items",
],
args: {
entity: "ReservationItem",
methodSuffix: "ReservationItems",
},
},
],
}