From c53fa6cd3be8b1af5625fc2db7871f9f69e761ad Mon Sep 17 00:00:00 2001 From: "Carlos R. L. Rodrigues" <37986729+carlos-r-l-rodrigues@users.noreply.github.com> Date: Tue, 22 Aug 2023 09:35:52 -0300 Subject: [PATCH] fix(utils,product): mikro orm connection loader (#4825) Fix shared connection property check --- .changeset/tiny-tomatoes-cheer.md | 6 ++++ .../__tests__/modules/load-standalone.ts | 29 +++++++++++++++++++ .../loaders/mikro-orm-connection-loader.ts | 9 +++--- 3 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 .changeset/tiny-tomatoes-cheer.md create mode 100644 integration-tests/plugins/__tests__/modules/load-standalone.ts diff --git a/.changeset/tiny-tomatoes-cheer.md b/.changeset/tiny-tomatoes-cheer.md new file mode 100644 index 0000000000..133065b554 --- /dev/null +++ b/.changeset/tiny-tomatoes-cheer.md @@ -0,0 +1,6 @@ +--- +"@medusajs/utils": minor +"@medusajs/product": minor +--- + +Fix mikro-orm connection loader diff --git a/integration-tests/plugins/__tests__/modules/load-standalone.ts b/integration-tests/plugins/__tests__/modules/load-standalone.ts new file mode 100644 index 0000000000..4f6296d1c8 --- /dev/null +++ b/integration-tests/plugins/__tests__/modules/load-standalone.ts @@ -0,0 +1,29 @@ +import dbFactory from "./../../../environment-helpers/use-template-db" + +jest.setTimeout(30000) + +describe("Standalone Modules", () => { + beforeAll(async () => { + const DB_HOST = process.env.DB_HOST + const DB_USERNAME = process.env.DB_USERNAME + const DB_PASSWORD = process.env.DB_PASSWORD + const DB_NAME = process.env.DB_TEMP_NAME + + process.env.POSTGRES_URL = `postgres://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST}/${DB_NAME}` + await dbFactory.createFromTemplate(DB_NAME) + }) + + afterAll(async () => { + process.env.POSTGRES_URL = undefined + }) + + it("Should migrate database and initialize Product module using connection string from environment variable ", async function () { + const { initialize, runMigrations } = require("@medusajs/product") + await runMigrations() + + const product = await initialize() + const productList = await product.list() + + expect(productList).toEqual(expect.arrayContaining([])) + }) +}) 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 b50389a9cc..734c5e3c90 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 @@ -5,11 +5,11 @@ import { MODULE_SCOPE, ModulesSdkTypes, } from "@medusajs/types" -import { asValue } from "awilix" import { PostgreSqlDriver, SqlEntityManager } from "@mikro-orm/postgresql" +import { asValue } from "awilix" import { ContainerRegistrationKeys, MedusaError } from "../../common" -import { loadDatabaseConfig } from "../load-module-database-config" import { mikroOrmCreateConnection } from "../../dal" +import { loadDatabaseConfig } from "../load-module-database-config" export async function mikroOrmConnectionLoader({ container, @@ -50,7 +50,8 @@ export async function mikroOrmConnectionLoader({ let dbConfig const shouldSwallowError = !!( options as ModulesSdkTypes.ModuleServiceInitializeOptions - )?.database.connection + )?.database?.connection + dbConfig = { ...loadDatabaseConfig( "product", @@ -58,7 +59,7 @@ export async function mikroOrmConnectionLoader({ shouldSwallowError ), connection: (options as ModulesSdkTypes.ModuleServiceInitializeOptions) - ?.database.connection, + ?.database?.connection, } manager ??= await loadDefault({