fix: Loading custom modules (#6411)

What:
   fix custom modules loading in medusa project
   pass medusa logger reference to MedusaApp
This commit is contained in:
Carlos R. L. Rodrigues
2024-02-15 12:06:02 -03:00
committed by GitHub
parent 339a946f38
commit 586df9da25
4 changed files with 29 additions and 7 deletions

View File

@@ -0,0 +1,7 @@
---
"@medusajs/modules-sdk": patch
"@medusajs/medusa": patch
"@medusajs/link-modules": patch
---
Fix custom modules loader

View File

@@ -108,7 +108,7 @@ export const initialize = async (
}
const logger =
injectedDependencies?.[ContainerRegistrationKeys.LOGGER] ?? console.log
injectedDependencies?.[ContainerRegistrationKeys.LOGGER] ?? console
definition.schema = generateGraphQLSchema(definition, primary, foreign, {
logger,

View File

@@ -10,6 +10,7 @@ import {
import {
CommonTypes,
InternalModuleDeclaration,
LoadedModule,
MedusaContainer,
ModuleDefinition,
} from "@medusajs/types"
@@ -54,12 +55,13 @@ export async function migrateMedusaApp(
},
config = { registerInContainer: true }
): Promise<void> {
const featureFlagRouter = container.resolve<FlagRouter>("featureFlagRouter")
const isMedusaV2Enabled = featureFlagRouter.isFeatureEnabled(MedusaV2Flag.key)
const injectedDependencies = {
[ContainerRegistrationKeys.PG_CONNECTION]: container.resolve(
ContainerRegistrationKeys.PG_CONNECTION
),
[ContainerRegistrationKeys.LOGGER]: container.resolve(
ContainerRegistrationKeys.LOGGER
),
}
const sharedResourcesConfig = {
@@ -73,7 +75,7 @@ export async function migrateMedusaApp(
// Apply default options to legacy modules
for (const moduleKey of Object.keys(configModules)) {
if (!ModulesDefinition[moduleKey].isLegacy) {
if (!ModulesDefinition[moduleKey]?.isLegacy) {
continue
}
@@ -121,6 +123,9 @@ export const loadMedusaApp = async (
[ContainerRegistrationKeys.PG_CONNECTION]: container.resolve(
ContainerRegistrationKeys.PG_CONNECTION
),
[ContainerRegistrationKeys.LOGGER]: container.resolve(
ContainerRegistrationKeys.LOGGER
),
}
const sharedResourcesConfig = {
@@ -137,7 +142,7 @@ export const loadMedusaApp = async (
// Apply default options to legacy modules
for (const moduleKey of Object.keys(configModules)) {
if (!ModulesDefinition[moduleKey].isLegacy) {
if (!ModulesDefinition[moduleKey]?.isLegacy) {
continue
}
@@ -202,9 +207,10 @@ export const loadMedusaApp = async (
asValue(medusaApp.query)
)
for (const [serviceKey, moduleService] of Object.entries(medusaApp.modules)) {
for (const moduleService of Object.values(medusaApp.modules)) {
const loadedModule = moduleService as LoadedModule
container.register(
ModulesDefinition[serviceKey].registrationName,
loadedModule.__definition.registrationName,
asValue(moduleService)
)
}

View File

@@ -18,6 +18,7 @@ import {
simpleHash,
stringifyCircular,
} from "@medusajs/utils"
import { EOL } from "os"
import {
moduleLoader,
registerMedusaLinkModule,
@@ -312,6 +313,14 @@ export class MedusaModule {
keyName
].__joinerConfig()
if (!joinerConfig.primaryKeys) {
logger.warn(
`Primary keys are not defined by the module ${keyName}. Setting default primary key to 'id'${EOL}`
)
joinerConfig.primaryKeys = ["id"]
}
services[keyName].__joinerConfig = joinerConfig
MedusaModule.setJoinerConfig(keyName, joinerConfig)
}