feat(types, product, utils, medusa): Include shared connection for modules (#4626)

This commit is contained in:
Adrien de Peretti
2023-08-08 15:10:34 +00:00
committed by GitHub
parent a2d7540e40
commit 3f3a84262c
26 changed files with 476 additions and 168 deletions
+22 -13
View File
@@ -13,7 +13,19 @@ export enum Modules {
}
export enum ModuleRegistrationName {
EVENT_BUS = "eventBusModuleService"
EVENT_BUS = "eventBusModuleService",
STOCK_LOCATION = "stockLocationService",
INVENTORY = "inventoryService",
CACHE = "cacheService",
PRODUCT = "productModuleService",
}
export const MODULE_PACKAGE_NAMES = {
[Modules.PRODUCT]: "@medusajs/product",
[Modules.EVENT_BUS]: "@medusajs/event-bus-local",
[Modules.STOCK_LOCATION]: "@medusajs/stock-location",
[Modules.INVENTORY]: "@medusajs/inventory",
[Modules.CACHE]: "@medusajs/cache-inmemory",
}
export const ModulesDefinition: { [key: string | Modules]: ModuleDefinition } =
@@ -21,7 +33,7 @@ export const ModulesDefinition: { [key: string | Modules]: ModuleDefinition } =
[Modules.EVENT_BUS]: {
key: Modules.EVENT_BUS,
registrationName: ModuleRegistrationName.EVENT_BUS,
defaultPackage: "@medusajs/event-bus-local",
defaultPackage: MODULE_PACKAGE_NAMES[Modules.EVENT_BUS],
label: "EventBusModuleService",
canOverride: true,
isRequired: true,
@@ -33,7 +45,7 @@ export const ModulesDefinition: { [key: string | Modules]: ModuleDefinition } =
},
[Modules.STOCK_LOCATION]: {
key: Modules.STOCK_LOCATION,
registrationName: "stockLocationService",
registrationName: ModuleRegistrationName.STOCK_LOCATION,
defaultPackage: false,
label: "StockLocationService",
isRequired: false,
@@ -47,7 +59,7 @@ export const ModulesDefinition: { [key: string | Modules]: ModuleDefinition } =
},
[Modules.INVENTORY]: {
key: Modules.INVENTORY,
registrationName: "inventoryService",
registrationName: ModuleRegistrationName.INVENTORY,
defaultPackage: false,
label: "InventoryService",
isRequired: false,
@@ -61,8 +73,8 @@ export const ModulesDefinition: { [key: string | Modules]: ModuleDefinition } =
},
[Modules.CACHE]: {
key: Modules.CACHE,
registrationName: "cacheService",
defaultPackage: "@medusajs/cache-inmemory",
registrationName: ModuleRegistrationName.CACHE,
defaultPackage: MODULE_PACKAGE_NAMES[Modules.CACHE],
label: "CacheService",
isRequired: true,
canOverride: true,
@@ -73,15 +85,16 @@ export const ModulesDefinition: { [key: string | Modules]: ModuleDefinition } =
},
[Modules.PRODUCT]: {
key: Modules.PRODUCT,
registrationName: "productModuleService",
registrationName: ModuleRegistrationName.PRODUCT,
defaultPackage: false,
label: "ProductModuleService",
isRequired: false,
canOverride: true,
isQueryable: true,
dependencies: [ModuleRegistrationName.EVENT_BUS],
dependencies: [ModuleRegistrationName.EVENT_BUS, "logger"],
defaultModuleDeclaration: {
scope: MODULE_SCOPE.EXTERNAL,
scope: MODULE_SCOPE.INTERNAL,
resources: MODULE_RESOURCE_TYPE.SHARED,
},
},
}
@@ -89,8 +102,4 @@ export const ModulesDefinition: { [key: string | Modules]: ModuleDefinition } =
export const MODULE_DEFINITIONS: ModuleDefinition[] =
Object.values(ModulesDefinition)
export const MODULE_PACKAGE_NAMES = {
[Modules.PRODUCT]: "@medusajs/product",
}
export default MODULE_DEFINITIONS
@@ -8,7 +8,10 @@ import {
ModuleExports,
ModuleResolution,
} from "@medusajs/types"
import { createMedusaContainer } from "@medusajs/utils"
import {
ContainerRegistrationKeys,
createMedusaContainer,
} from "@medusajs/utils"
import { asFunction, asValue } from "awilix"
export async function loadInternalModule(
@@ -73,7 +76,12 @@ export async function loadInternalModule(
const dependencies = resolution?.dependencies ?? []
if (resources === MODULE_RESOURCE_TYPE.SHARED) {
dependencies.push("manager", "configModule")
dependencies.push(
ContainerRegistrationKeys.MANAGER,
ContainerRegistrationKeys.CONFIG_MODULE,
ContainerRegistrationKeys.LOGGER,
ContainerRegistrationKeys.PG_CONNECTION
)
}
for (const dependency of dependencies) {