diff --git a/packages/core/modules-sdk/src/medusa-app.ts b/packages/core/modules-sdk/src/medusa-app.ts index f18d0fcc97..ba47687bd2 100644 --- a/packages/core/modules-sdk/src/medusa-app.ts +++ b/packages/core/modules-sdk/src/medusa-app.ts @@ -18,14 +18,14 @@ import { } from "@medusajs/types" import { ContainerRegistrationKeys, - createMedusaContainer, - dynamicImport, GraphQLUtils, - isObject, - isString, MedusaError, Modules, ModulesSdkUtils, + createMedusaContainer, + dynamicImport, + isObject, + isString, promiseAll, } from "@medusajs/utils" import type { Knex } from "@mikro-orm/knex" @@ -37,7 +37,7 @@ import { RegisterModuleJoinerConfig, } from "./medusa-module" import { RemoteLink } from "./remote-link" -import { createQuery, RemoteQuery } from "./remote-query" +import { RemoteQuery, createQuery } from "./remote-query" import { MODULE_RESOURCE_TYPE, MODULE_SCOPE } from "./types" const LinkModulePackage = MODULE_PACKAGE_NAMES[Modules.LINK] @@ -85,13 +85,23 @@ export type SharedResources = { } } -export async function loadModules( - modulesConfig, - sharedContainer, - migrationOnly = false, - loaderOnly = false, - workerMode: "shared" | "worker" | "server" = "server" -) { +export async function loadModules(args: { + modulesConfig: MedusaModuleConfig + sharedContainer: MedusaContainer + sharedResourcesConfig?: SharedResources + migrationOnly?: boolean + loaderOnly?: boolean + workerMode?: "shared" | "worker" | "server" +}) { + const { + modulesConfig, + sharedContainer, + sharedResourcesConfig, + migrationOnly = false, + loaderOnly = false, + workerMode = "server", + } = args + const allModules = {} await Promise.all( @@ -128,6 +138,18 @@ export async function loadModules( declaration.resources = MODULE_RESOURCE_TYPE.SHARED } + if ( + declaration.scope === MODULE_SCOPE.INTERNAL && + declaration.resources === MODULE_RESOURCE_TYPE.SHARED + ) { + declaration.options ??= {} + declaration.options.database ??= { + ...sharedResourcesConfig?.database, + } + declaration.options.database.debug ??= + sharedResourcesConfig?.database?.debug + } + const loaded = (await MedusaModule.bootstrap({ moduleKey: moduleName, defaultPath: path, @@ -348,13 +370,14 @@ async function MedusaApp_({ }) } - const allModules = await loadModules( - modules, - sharedContainer_, + const allModules = await loadModules({ + modulesConfig: modules, + sharedContainer: sharedContainer_, + sharedResourcesConfig, migrationOnly, loaderOnly, - workerMode - ) + workerMode, + }) if (loaderOnly) { async function query(...args: any[]) { @@ -457,11 +480,18 @@ async function MedusaApp_({ } for (const { resolution: moduleResolution } of moduleResolutions) { - if (!moduleResolution.options?.database) { + if ( + !moduleResolution.options?.database && + moduleResolution.moduleDeclaration?.scope === MODULE_SCOPE.INTERNAL && + moduleResolution.moduleDeclaration?.resources === + MODULE_RESOURCE_TYPE.SHARED + ) { moduleResolution.options ??= {} moduleResolution.options.database = { ...(sharedResourcesConfig?.database ?? {}), } + ;(moduleResolution as any).options.database.debug ??= + sharedResourcesConfig?.database?.debug } const migrationOptions: MigrationOptions = { @@ -517,6 +547,7 @@ async function MedusaApp_({ options.database ??= { ...sharedResourcesConfig?.database, } + options.database.debug ??= sharedResourcesConfig?.database?.debug return getMigrationPlanner(options, linkModules) }