feat(link-modules, pricing, product, utils): Custom database config in shared mode (#5755)

* feat(link-modules, pricing, product, utils): Should be able to set some custom database config even in shared mode

* Create wet-hounds-retire.md
This commit is contained in:
Adrien de Peretti
2023-11-29 08:19:28 +00:00
committed by GitHub
parent c4deeee481
commit 8f25ed8a10
5 changed files with 28 additions and 3 deletions
+8
View File
@@ -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
@@ -23,6 +23,7 @@ export function connectionLoader(entity: EntitySchema) {
const pathToMigrations = __dirname + "/../migrations" const pathToMigrations = __dirname + "/../migrations"
await ModulesSdkUtils.mikroOrmConnectionLoader({ await ModulesSdkUtils.mikroOrmConnectionLoader({
moduleName: "link_module",
entities: [entity], entities: [entity],
container, container,
options, options,
@@ -19,6 +19,7 @@ export default async (
const pathToMigrations = __dirname + "/../migrations" const pathToMigrations = __dirname + "/../migrations"
await ModulesSdkUtils.mikroOrmConnectionLoader({ await ModulesSdkUtils.mikroOrmConnectionLoader({
moduleName: "pricing",
entities, entities,
container, container,
options, options,
@@ -19,6 +19,7 @@ export default async (
const pathToMigrations = __dirname + "/../migrations" const pathToMigrations = __dirname + "/../migrations"
await ModulesSdkUtils.mikroOrmConnectionLoader({ await ModulesSdkUtils.mikroOrmConnectionLoader({
moduleName: "product",
entities, entities,
container, container,
options, options,
@@ -12,12 +12,14 @@ import { mikroOrmCreateConnection } from "../../dal"
import { loadDatabaseConfig } from "../load-module-database-config" import { loadDatabaseConfig } from "../load-module-database-config"
export async function mikroOrmConnectionLoader({ export async function mikroOrmConnectionLoader({
moduleName,
container, container,
options, options,
moduleDeclaration, moduleDeclaration,
entities, entities,
pathToMigrations, pathToMigrations,
}: { }: {
moduleName: string
entities: any[] entities: any[]
container: MedusaContainer container: MedusaContainer
options?: options?:
@@ -43,7 +45,18 @@ export async function mikroOrmConnectionLoader({
moduleDeclaration?.scope === MODULE_SCOPE.INTERNAL && moduleDeclaration?.scope === MODULE_SCOPE.INTERNAL &&
moduleDeclaration.resources === MODULE_RESOURCE_TYPE.SHARED 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 )?.database?.connection
dbConfig = { dbConfig = {
...loadDatabaseConfig( ...loadDatabaseConfig(
"product", moduleName,
(options ?? {}) as ModulesSdkTypes.ModuleServiceInitializeOptions, (options ?? {}) as ModulesSdkTypes.ModuleServiceInitializeOptions,
shouldSwallowError shouldSwallowError
), ),
@@ -95,7 +108,7 @@ async function loadDefault({
return orm.em.fork() return orm.em.fork()
} }
async function loadShared({ container, entities, pathToMigrations }) { async function loadShared({ database, container, entities, pathToMigrations }) {
const sharedConnection = container.resolve( const sharedConnection = container.resolve(
ContainerRegistrationKeys.PG_CONNECTION, ContainerRegistrationKeys.PG_CONNECTION,
{ {
@@ -111,6 +124,7 @@ async function loadShared({ container, entities, pathToMigrations }) {
const manager = await loadDefault({ const manager = await loadDefault({
entities, entities,
database: { database: {
...database,
connection: sharedConnection, connection: sharedConnection,
}, },
pathToMigrations, pathToMigrations,