feat(migrations): CLI generate command (#8103)

This commit is contained in:
Adrien de Peretti
2024-07-12 13:12:49 +02:00
committed by GitHub
parent 4c2e9a3239
commit 104b00d4e9
14 changed files with 341 additions and 164 deletions
+27 -76
View File
@@ -1,6 +1,7 @@
import {
MedusaApp,
MedusaAppMigrateDown,
MedusaAppMigrateGenerate,
MedusaAppMigrateUp,
MedusaAppOptions,
MedusaAppOutput,
@@ -57,12 +58,21 @@ export function mergeDefaultModules(
return configModules
}
async function runMedusaAppMigrations({
/**
* Run, Revert or Generate the migrations for the medusa app.
*
* @param configModule
* @param container
* @param moduleNames
* @param linkModules
* @param action
*/
export async function runMedusaAppMigrations({
configModule,
container,
moduleNames,
revert = false,
linkModules,
action = "run",
}: {
configModule: {
modules?: CommonTypes.ConfigModule["modules"]
@@ -73,11 +83,11 @@ async function runMedusaAppMigrations({
} & (
| {
moduleNames?: never
revert: false
action: "run"
}
| {
moduleNames: string[]
revert: true
action: "revert" | "generate"
}
)): Promise<void> {
const injectedDependencies = {
@@ -101,82 +111,23 @@ async function runMedusaAppMigrations({
}
const configModules = mergeDefaultModules(configModule.modules)
if (revert) {
await MedusaAppMigrateDown(moduleNames!, {
modulesConfig: configModules,
sharedContainer: container,
linkModules,
sharedResourcesConfig,
injectedDependencies,
})
const migrationOptions = {
modulesConfig: configModules,
sharedContainer: container,
linkModules,
sharedResourcesConfig,
injectedDependencies,
}
if (action === "revert") {
await MedusaAppMigrateDown(moduleNames!, migrationOptions)
} else if (action === "run") {
await MedusaAppMigrateUp(migrationOptions)
} else {
await MedusaAppMigrateUp({
modulesConfig: configModules,
sharedContainer: container,
linkModules,
sharedResourcesConfig,
injectedDependencies,
})
await MedusaAppMigrateGenerate(moduleNames!, migrationOptions)
}
}
/**
*
* @param configModule The config module
* @param linkModules Custom links from the plugins
* @param container The medusa container
*/
export async function migrateMedusaApp({
configModule,
linkModules,
container,
}: {
configModule: {
modules?: CommonTypes.ConfigModule["modules"]
projectConfig: CommonTypes.ConfigModule["projectConfig"]
}
container: MedusaContainer
linkModules?: MedusaAppOptions["linkModules"]
}): Promise<void> {
await runMedusaAppMigrations({
configModule,
container,
linkModules,
revert: false,
})
}
/**
*
* @param modulesToRevert An array of modules for which you want to revert
* migrations
* @param configModule The config module
* @param linkModules Custom links from the plugins
* @param container The medusa container
*/
export async function revertMedusaApp({
modulesToRevert,
configModule,
linkModules,
container,
}: {
modulesToRevert: string[]
configModule: {
modules?: CommonTypes.ConfigModule["modules"]
projectConfig: CommonTypes.ConfigModule["projectConfig"]
}
container: MedusaContainer
linkModules?: MedusaAppOptions["linkModules"]
}): Promise<void> {
await runMedusaAppMigrations({
moduleNames: modulesToRevert,
configModule,
container,
revert: true,
linkModules,
})
}
export const loadMedusaApp = async (
{
container,