diff --git a/.changeset/shy-melons-jog.md b/.changeset/shy-melons-jog.md new file mode 100644 index 0000000000..a3c1c472a3 --- /dev/null +++ b/.changeset/shy-melons-jog.md @@ -0,0 +1,5 @@ +--- +"@medusajs/utils": patch +--- + +chore(): Generate migrations with correct mikro orm import path diff --git a/packages/core/utils/src/migrations/index.ts b/packages/core/utils/src/migrations/index.ts index 99db453168..d0376dfa6d 100644 --- a/packages/core/utils/src/migrations/index.ts +++ b/packages/core/utils/src/migrations/index.ts @@ -14,6 +14,22 @@ import { dirname, join } from "path" import { readDir } from "../common" import { CustomDBMigrator } from "../dal/mikro-orm/custom-db-migrator" +// Define the replacement mappings +const replacements = [ + // MikroORM imports - replace mikro-orm/{subpath} with @medusajs/framework/mikro-orm/{subpath} + { + pattern: /from\s+['"]@?mikro-orm\/([^'"]+)['"]/g, + // eslint-disable-next-line quotes + replacement: 'from "@medusajs/framework/mikro-orm/$1"', + }, + // PG imports - replace pg with @medusajs/framework/pg + { + pattern: /from\s+['"]pg['"]/g, + // eslint-disable-next-line quotes + replacement: 'from "@medusajs/framework/pg"', + }, +] + /** * Events emitted by the migrations class */ @@ -70,7 +86,33 @@ export class Migrations extends EventEmitter { try { await this.migrateSnapshotFile(migrator["snapshotPath"]) await this.ensureSnapshot(migrator["snapshotPath"]) - return await migrator.createMigration() + const migrationResult = await migrator.createMigration() + const code = migrationResult.code + if (code) { + let modifiedContent = code + let wasModified = false + + replacements.forEach(({ pattern, replacement }) => { + const newContent = modifiedContent.replace(pattern, replacement) + if (newContent !== modifiedContent) { + wasModified = true + modifiedContent = newContent + } + }) + + if (wasModified) { + await writeFile( + join( + connection.config.getDriver().config.get("migrations").path ?? "", + migrationResult.fileName + ), + modifiedContent, + "utf-8" + ) + } + migrationResult.code = modifiedContent + } + return migrationResult } finally { await connection.close(true) } diff --git a/packages/core/utils/src/modules-sdk/migration-scripts/migration-generate.ts b/packages/core/utils/src/modules-sdk/migration-scripts/migration-generate.ts index 0f85397be7..4e5b6954eb 100644 --- a/packages/core/utils/src/modules-sdk/migration-scripts/migration-generate.ts +++ b/packages/core/utils/src/modules-sdk/migration-scripts/migration-generate.ts @@ -26,13 +26,12 @@ export function buildGenerateMigrationScript({ * @param logger * @param moduleDeclaration */ - return async function ({ - options, - logger, - }: Pick< - LoaderOptions, - "options" | "logger" - > = {}) { + return async function ( + { options, logger } = {} as Pick< + LoaderOptions, + "options" | "logger" + > + ) { logger ??= console as unknown as Logger logger.info(new Array(TERMINAL_SIZE).join("-"))