diff --git a/.changeset/wet-hounds-retire.md b/.changeset/wet-hounds-retire.md new file mode 100644 index 0000000000..0154efdb23 --- /dev/null +++ b/.changeset/wet-hounds-retire.md @@ -0,0 +1,8 @@ +--- +"@medusajs/link-modules": patch +"@medusajs/pricing": patch +"@medusajs/product": patch +"@medusajs/utils": patch +--- + +feat(link-modules, pricing, product, utils): Should be able to set some custom database config even in shared mode diff --git a/packages/link-modules/src/loaders/connection.ts b/packages/link-modules/src/loaders/connection.ts index c7710c21e0..88ece9c68c 100644 --- a/packages/link-modules/src/loaders/connection.ts +++ b/packages/link-modules/src/loaders/connection.ts @@ -23,6 +23,7 @@ export function connectionLoader(entity: EntitySchema) { const pathToMigrations = __dirname + "/../migrations" await ModulesSdkUtils.mikroOrmConnectionLoader({ + moduleName: "link_module", entities: [entity], container, options, diff --git a/packages/pricing/src/loaders/connection.ts b/packages/pricing/src/loaders/connection.ts index 1070b8dc25..0573cb06b7 100644 --- a/packages/pricing/src/loaders/connection.ts +++ b/packages/pricing/src/loaders/connection.ts @@ -19,6 +19,7 @@ export default async ( const pathToMigrations = __dirname + "/../migrations" await ModulesSdkUtils.mikroOrmConnectionLoader({ + moduleName: "pricing", entities, container, options, diff --git a/packages/product/src/loaders/connection.ts b/packages/product/src/loaders/connection.ts index 06379e611b..6738c53b47 100644 --- a/packages/product/src/loaders/connection.ts +++ b/packages/product/src/loaders/connection.ts @@ -19,6 +19,7 @@ export default async ( const pathToMigrations = __dirname + "/../migrations" await ModulesSdkUtils.mikroOrmConnectionLoader({ + moduleName: "product", entities, container, options, diff --git a/packages/utils/src/modules-sdk/loaders/mikro-orm-connection-loader.ts b/packages/utils/src/modules-sdk/loaders/mikro-orm-connection-loader.ts index d8d39c7823..09c2704e2b 100644 --- a/packages/utils/src/modules-sdk/loaders/mikro-orm-connection-loader.ts +++ b/packages/utils/src/modules-sdk/loaders/mikro-orm-connection-loader.ts @@ -12,12 +12,14 @@ import { mikroOrmCreateConnection } from "../../dal" import { loadDatabaseConfig } from "../load-module-database-config" export async function mikroOrmConnectionLoader({ + moduleName, container, options, moduleDeclaration, entities, pathToMigrations, }: { + moduleName: string entities: any[] container: MedusaContainer options?: @@ -43,7 +45,18 @@ export async function mikroOrmConnectionLoader({ moduleDeclaration?.scope === MODULE_SCOPE.INTERNAL && moduleDeclaration.resources === MODULE_RESOURCE_TYPE.SHARED ) { - return await loadShared({ container, entities, pathToMigrations }) + const shouldSwallowError = true + const dbConfig = loadDatabaseConfig( + moduleName, + (options ?? {}) as ModulesSdkTypes.ModuleServiceInitializeOptions, + shouldSwallowError + ) + return await loadShared({ + database: dbConfig, + container, + entities, + pathToMigrations, + }) } /** @@ -55,7 +68,7 @@ export async function mikroOrmConnectionLoader({ )?.database?.connection dbConfig = { ...loadDatabaseConfig( - "product", + moduleName, (options ?? {}) as ModulesSdkTypes.ModuleServiceInitializeOptions, shouldSwallowError ), @@ -95,7 +108,7 @@ async function loadDefault({ return orm.em.fork() } -async function loadShared({ container, entities, pathToMigrations }) { +async function loadShared({ database, container, entities, pathToMigrations }) { const sharedConnection = container.resolve( ContainerRegistrationKeys.PG_CONNECTION, { @@ -111,6 +124,7 @@ async function loadShared({ container, entities, pathToMigrations }) { const manager = await loadDefault({ entities, database: { + ...database, connection: sharedConnection, }, pathToMigrations,