diff --git a/.changeset/selfish-trees-sip.md b/.changeset/selfish-trees-sip.md new file mode 100644 index 0000000000..758d4a6bfd --- /dev/null +++ b/.changeset/selfish-trees-sip.md @@ -0,0 +1,8 @@ +--- +"@medusajs/utils": patch +"@medusajs/product": patch +"@medusajs/pricing": patch +"@medusajs/link-modules": patch +--- + +fix(utils, product, pricing, link-modules): add missing dependencies for utils + fix migration path issue diff --git a/packages/link-modules/src/loaders/connection.ts b/packages/link-modules/src/loaders/connection.ts index 987d5eec7f..c7710c21e0 100644 --- a/packages/link-modules/src/loaders/connection.ts +++ b/packages/link-modules/src/loaders/connection.ts @@ -20,12 +20,15 @@ export function connectionLoader(entity: EntitySchema) { >, moduleDeclaration?: InternalModuleDeclaration ): Promise => { + const pathToMigrations = __dirname + "/../migrations" + await ModulesSdkUtils.mikroOrmConnectionLoader({ entities: [entity], container, options, moduleDeclaration, logger, + pathToMigrations, }) } } diff --git a/packages/link-modules/src/migration/index.ts b/packages/link-modules/src/migration/index.ts index 45463850bc..7f70784727 100644 --- a/packages/link-modules/src/migration/index.ts +++ b/packages/link-modules/src/migration/index.ts @@ -28,8 +28,13 @@ export function getMigration( const dbData = ModulesSdkUtils.loadDatabaseConfig("link_modules", options) const entity = generateEntity(joinerConfig, primary, foreign) + const pathToMigrations = __dirname + "/../migrations" - const orm = await DALUtils.mikroOrmCreateConnection(dbData, [entity]) + const orm = await DALUtils.mikroOrmCreateConnection( + dbData, + [entity], + pathToMigrations + ) const tableName = entity.meta.collection diff --git a/packages/pricing/src/loaders/connection.ts b/packages/pricing/src/loaders/connection.ts index ad1480d4c1..1070b8dc25 100644 --- a/packages/pricing/src/loaders/connection.ts +++ b/packages/pricing/src/loaders/connection.ts @@ -16,6 +16,7 @@ export default async ( moduleDeclaration?: InternalModuleDeclaration ): Promise => { const entities = Object.values(PricingModels) as unknown as EntitySchema[] + const pathToMigrations = __dirname + "/../migrations" await ModulesSdkUtils.mikroOrmConnectionLoader({ entities, @@ -23,5 +24,6 @@ export default async ( options, moduleDeclaration, logger, + pathToMigrations, }) } diff --git a/packages/pricing/src/scripts/migration-down.ts b/packages/pricing/src/scripts/migration-down.ts index 96b4d88c5b..5b9eff8f13 100644 --- a/packages/pricing/src/scripts/migration-down.ts +++ b/packages/pricing/src/scripts/migration-down.ts @@ -23,8 +23,13 @@ export async function revertMigration({ const dbData = ModulesSdkUtils.loadDatabaseConfig("pricing", options)! const entities = Object.values(PricingModels) as unknown as EntitySchema[] + const pathToMigrations = __dirname + "/../migrations" - const orm = await DALUtils.mikroOrmCreateConnection(dbData, entities) + const orm = await DALUtils.mikroOrmCreateConnection( + dbData, + entities, + pathToMigrations + ) try { const migrator = orm.getMigrator() diff --git a/packages/pricing/src/scripts/migration-up.ts b/packages/pricing/src/scripts/migration-up.ts index 656ed6e3b1..93b4b9e6f4 100644 --- a/packages/pricing/src/scripts/migration-up.ts +++ b/packages/pricing/src/scripts/migration-up.ts @@ -21,8 +21,13 @@ export async function runMigrations({ const dbData = ModulesSdkUtils.loadDatabaseConfig("pricing", options)! const entities = Object.values(PricingModels) as unknown as EntitySchema[] + const pathToMigrations = __dirname + "/../migrations" - const orm = await DALUtils.mikroOrmCreateConnection(dbData, entities) + const orm = await DALUtils.mikroOrmCreateConnection( + dbData, + entities, + pathToMigrations + ) try { const migrator = orm.getMigrator() diff --git a/packages/pricing/src/scripts/seed.ts b/packages/pricing/src/scripts/seed.ts index 6e86718bbc..9c003b24d8 100644 --- a/packages/pricing/src/scripts/seed.ts +++ b/packages/pricing/src/scripts/seed.ts @@ -33,8 +33,13 @@ export async function run({ const dbData = ModulesSdkUtils.loadDatabaseConfig("pricing", options)! const entities = Object.values(PricingModels) as unknown as EntitySchema[] + const pathToMigrations = __dirname + "/../migrations" - const orm = await DALUtils.mikroOrmCreateConnection(dbData, entities) + const orm = await DALUtils.mikroOrmCreateConnection( + dbData, + entities, + pathToMigrations + ) const manager = orm.em.fork() try { diff --git a/packages/product/src/loaders/connection.ts b/packages/product/src/loaders/connection.ts index b878f1413c..06379e611b 100644 --- a/packages/product/src/loaders/connection.ts +++ b/packages/product/src/loaders/connection.ts @@ -1,8 +1,8 @@ import { InternalModuleDeclaration, LoaderOptions } from "@medusajs/modules-sdk" import { ModulesSdkTypes } from "@medusajs/types" import { ModulesSdkUtils } from "@medusajs/utils" -import * as ProductModels from "../models" import { EntitySchema } from "@mikro-orm/core" +import * as ProductModels from "../models" export default async ( { @@ -16,6 +16,7 @@ export default async ( moduleDeclaration?: InternalModuleDeclaration ): Promise => { const entities = Object.values(ProductModels) as unknown as EntitySchema[] + const pathToMigrations = __dirname + "/../migrations" await ModulesSdkUtils.mikroOrmConnectionLoader({ entities, @@ -23,5 +24,6 @@ export default async ( options, moduleDeclaration, logger, + pathToMigrations, }) } diff --git a/packages/product/src/scripts/migration-down.ts b/packages/product/src/scripts/migration-down.ts index f8e11e9dc6..3ee0534378 100644 --- a/packages/product/src/scripts/migration-down.ts +++ b/packages/product/src/scripts/migration-down.ts @@ -2,8 +2,8 @@ import * as ProductModels from "@models" import { LoaderOptions, Logger, ModulesSdkTypes } from "@medusajs/types" -import { EntitySchema } from "@mikro-orm/core" import { DALUtils, ModulesSdkUtils } from "@medusajs/utils" +import { EntitySchema } from "@mikro-orm/core" /** * This script is only valid for mikro orm managers. If a user provide a custom manager @@ -23,8 +23,13 @@ export async function revertMigration({ const dbData = ModulesSdkUtils.loadDatabaseConfig("product", options)! const entities = Object.values(ProductModels) as unknown as EntitySchema[] + const pathToMigrations = __dirname + "/../migrations" - const orm = await DALUtils.mikroOrmCreateConnection(dbData, entities) + const orm = await DALUtils.mikroOrmCreateConnection( + dbData, + entities, + pathToMigrations + ) try { const migrator = orm.getMigrator() diff --git a/packages/product/src/scripts/migration-up.ts b/packages/product/src/scripts/migration-up.ts index 861ffd7106..021c573706 100644 --- a/packages/product/src/scripts/migration-up.ts +++ b/packages/product/src/scripts/migration-up.ts @@ -1,7 +1,7 @@ import { LoaderOptions, Logger, ModulesSdkTypes } from "@medusajs/types" -import * as ProductModels from "@models" -import { EntitySchema } from "@mikro-orm/core" import { DALUtils, ModulesSdkUtils } from "@medusajs/utils" +import { EntitySchema } from "@mikro-orm/core" +import * as ProductModels from "@models" /** * This script is only valid for mikro orm managers. If a user provide a custom manager @@ -21,8 +21,13 @@ export async function runMigrations({ const dbData = ModulesSdkUtils.loadDatabaseConfig("product", options)! const entities = Object.values(ProductModels) as unknown as EntitySchema[] + const pathToMigrations = __dirname + "/../migrations" - const orm = await DALUtils.mikroOrmCreateConnection(dbData, entities) + const orm = await DALUtils.mikroOrmCreateConnection( + dbData, + entities, + pathToMigrations + ) try { const migrator = orm.getMigrator() diff --git a/packages/product/src/scripts/seed.ts b/packages/product/src/scripts/seed.ts index 118dfb5c5e..6c3eb5fb66 100644 --- a/packages/product/src/scripts/seed.ts +++ b/packages/product/src/scripts/seed.ts @@ -1,11 +1,11 @@ +import { LoaderOptions, Logger, ModulesSdkTypes } from "@medusajs/types" +import { DALUtils, ModulesSdkUtils } from "@medusajs/utils" +import { EntitySchema } from "@mikro-orm/core" +import { SqlEntityManager } from "@mikro-orm/postgresql" import * as ProductModels from "@models" import { Product, ProductCategory, ProductVariant } from "@models" -import { EntitySchema } from "@mikro-orm/core" -import { LoaderOptions, Logger, ModulesSdkTypes } from "@medusajs/types" import { EOL } from "os" -import { SqlEntityManager } from "@mikro-orm/postgresql" import { resolve } from "path" -import { DALUtils, ModulesSdkUtils } from "@medusajs/utils" export async function run({ options, @@ -33,8 +33,13 @@ export async function run({ const dbData = ModulesSdkUtils.loadDatabaseConfig("product", options)! const entities = Object.values(ProductModels) as unknown as EntitySchema[] + const pathToMigrations = __dirname + "/../migrations" - const orm = await DALUtils.mikroOrmCreateConnection(dbData, entities) + const orm = await DALUtils.mikroOrmCreateConnection( + dbData, + entities, + pathToMigrations + ) const manager = orm.em.fork() try { diff --git a/packages/utils/package.json b/packages/utils/package.json index c93336a68a..0afb4e598a 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -18,7 +18,6 @@ "author": "Medusa", "license": "MIT", "devDependencies": { - "@medusajs/types": "^1.10.2", "@types/express": "^4.17.17", "cross-env": "^5.2.1", "express": "^4.18.2", @@ -28,6 +27,10 @@ "typescript": "^5.1.6" }, "dependencies": { + "@medusajs/types": "^1.10.2", + "@mikro-orm/core": "5.7.12", + "@mikro-orm/migrations": "5.7.12", + "@mikro-orm/postgresql": "5.7.12", "awilix": "^8.0.1", "ulid": "^2.3.0" }, diff --git a/packages/utils/src/dal/mikro-orm/mikro-orm-create-connection.ts b/packages/utils/src/dal/mikro-orm/mikro-orm-create-connection.ts index aeffdc8b32..3e1d604795 100644 --- a/packages/utils/src/dal/mikro-orm/mikro-orm-create-connection.ts +++ b/packages/utils/src/dal/mikro-orm/mikro-orm-create-connection.ts @@ -2,7 +2,8 @@ import { ModuleServiceInitializeOptions } from "@medusajs/types" export async function mikroOrmCreateConnection( database: ModuleServiceInitializeOptions["database"] & { connection?: any }, - entities: any[] + entities: any[], + pathToMigrations: string ) { let schema = database.schema || "public" @@ -33,7 +34,7 @@ export async function mikroOrmCreateConnection( tsNode: process.env.APP_ENV === "development", type: "postgresql", migrations: { - path: __dirname + "/../migrations", + path: pathToMigrations, }, }) } 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 b11db4dca5..d8d39c7823 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 @@ -16,6 +16,7 @@ export async function mikroOrmConnectionLoader({ options, moduleDeclaration, entities, + pathToMigrations, }: { entities: any[] container: MedusaContainer @@ -24,6 +25,7 @@ export async function mikroOrmConnectionLoader({ | ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions moduleDeclaration?: ModulesSdkTypes.InternalModuleDeclaration logger?: Logger + pathToMigrations: string }) { let manager = ( options as ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions @@ -41,7 +43,7 @@ export async function mikroOrmConnectionLoader({ moduleDeclaration?.scope === MODULE_SCOPE.INTERNAL && moduleDeclaration.resources === MODULE_RESOURCE_TYPE.SHARED ) { - return await loadShared({ container, entities }) + return await loadShared({ container, entities, pathToMigrations }) } /** @@ -64,6 +66,7 @@ export async function mikroOrmConnectionLoader({ manager ??= await loadDefault({ database: dbConfig, entities, + pathToMigrations, }) container.register({ @@ -74,6 +77,7 @@ export async function mikroOrmConnectionLoader({ async function loadDefault({ database, entities, + pathToMigrations, }): Promise> { if (!database) { throw new MedusaError( @@ -82,12 +86,16 @@ async function loadDefault({ ) } - const orm = await mikroOrmCreateConnection(database, entities) + const orm = await mikroOrmCreateConnection( + database, + entities, + pathToMigrations + ) return orm.em.fork() } -async function loadShared({ container, entities }) { +async function loadShared({ container, entities, pathToMigrations }) { const sharedConnection = container.resolve( ContainerRegistrationKeys.PG_CONNECTION, { @@ -105,6 +113,7 @@ async function loadShared({ container, entities }) { database: { connection: sharedConnection, }, + pathToMigrations, }) container.register({ manager: asValue(manager), diff --git a/yarn.lock b/yarn.lock index 1b3c0fda7c..4ca2a27d61 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6780,6 +6780,9 @@ __metadata: resolution: "@medusajs/utils@workspace:packages/utils" dependencies: "@medusajs/types": ^1.10.2 + "@mikro-orm/core": 5.7.12 + "@mikro-orm/migrations": 5.7.12 + "@mikro-orm/postgresql": 5.7.12 "@types/express": ^4.17.17 awilix: ^8.0.1 cross-env: ^5.2.1