breaking: rework how links database migrations are managed (#8162)

This commit is contained in:
Adrien de Peretti authored and GitHub committed 2024-07-22 13:12:23 +05:30
1 parent f435c6c7f6
commit f74fdcb644
24 files changed
+1090 -264

No files matched your search

+54 -1
View File
@@ -1,5 +1,6 @@
import {
MedusaApp,
MedusaAppGetLinksExecutionPlanner,
MedusaAppMigrateDown,
MedusaAppMigrateGenerate,
MedusaAppMigrateUp,
@@ -10,6 +11,7 @@ import {
import {
CommonTypes,
ConfigModule,
ILinkMigrationsPlanner,
InternalModuleDeclaration,
LoadedModule,
MedusaContainer,
@@ -134,6 +136,57 @@ export async function runMedusaAppMigrations({
}
}
/**
* Return an instance of the link module migration planner.
*
* @param configModule
* @param container
* @param linkModules
*/
export async function getLinksExecutionPlanner({
configModule,
container,
linkModules,
}: {
configModule: {
modules?: CommonTypes.ConfigModule["modules"]
projectConfig: CommonTypes.ConfigModule["projectConfig"]
}
linkModules?: MedusaAppOptions["linkModules"]
container: MedusaContainer
}): Promise<ILinkMigrationsPlanner> {
const injectedDependencies = {
[ContainerRegistrationKeys.PG_CONNECTION]: container.resolve(
ContainerRegistrationKeys.PG_CONNECTION
),
[ContainerRegistrationKeys.LOGGER]: container.resolve(
ContainerRegistrationKeys.LOGGER
),
}
const sharedResourcesConfig = {
database: {
clientUrl:
injectedDependencies[ContainerRegistrationKeys.PG_CONNECTION]?.client
?.config?.connection?.connectionString ??
configModule.projectConfig.databaseUrl,
driverOptions: configModule.projectConfig.databaseDriverOptions,
debug: !!(configModule.projectConfig.databaseLogging ?? false),
},
}
const configModules = mergeDefaultModules(configModule.modules)
const migrationOptions = {
modulesConfig: configModules,
sharedContainer: container,
linkModules,
sharedResourcesConfig,
injectedDependencies,
}
return await MedusaAppGetLinksExecutionPlanner(migrationOptions)
}
export const loadMedusaApp = async (
{
container,
@@ -200,7 +253,7 @@ export const loadMedusaApp = async (
)
}
// Register all unresolved modules as undefined to be present in the container with undefined value by defaul
// Register all unresolved modules as undefined to be present in the container with undefined value by default
// but still resolvable
for (const moduleDefinition of Object.values(ModulesDefinition)) {
if (!container.hasRegistration(moduleDefinition.registrationName)) {