chore: use loaded module reference (#5763)

This commit is contained in:
Carlos R. L. Rodrigues authored and GitHub committed 2024-01-23 08:31:02 -03:00
1 parent bc79edfa67
commit d85fee42ee
25 files changed
+291 -191

No files matched your search

+10
View File
@@ -0,0 +1,10 @@
---
"@medusajs/modules-sdk": patch
"@medusajs/types": patch
"@medusajs/pricing": patch
"@medusajs/product": patch
"@medusajs/inventory": patch
"@medusajs/stock-location": patch
---
Medusa App loading modules reference
@@ -16,7 +16,7 @@ import {
} from "../../../../factories" } from "../../../../factories"
import { createDefaultRuleTypes } from "../../../helpers/create-default-rule-types" import { createDefaultRuleTypes } from "../../../helpers/create-default-rule-types"
jest.setTimeout(5000000) jest.setTimeout(50000)
const adminHeaders = { const adminHeaders = {
headers: { headers: {
+6 -17
View File
@@ -1,22 +1,11 @@
import { moduleDefinition } from "./module-definition" import {
import { Modules } from "@medusajs/modules-sdk" moduleDefinition,
import * as Models from "@models" revertMigration,
import { ModulesSdkUtils } from "@medusajs/utils" runMigrations,
} from "./module-definition"
export default moduleDefinition export default moduleDefinition
export { revertMigration, runMigrations }
const migrationScriptOptions = {
moduleName: Modules.AUTHENTICATION,
models: Models,
pathToMigrations: __dirname + "/migrations",
}
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
export * from "./initialize" export * from "./initialize"
export * from "./loaders" export * from "./loaders"
@@ -1,13 +1,31 @@
import { Modules } from "@medusajs/modules-sdk"
import { ModuleExports } from "@medusajs/types" import { ModuleExports } from "@medusajs/types"
import { ModulesSdkUtils } from "@medusajs/utils"
import * as Models from "@models"
import { AuthenticationModuleService } from "@services" import { AuthenticationModuleService } from "@services"
import loadConnection from "./loaders/connection" import loadConnection from "./loaders/connection"
import loadContainer from "./loaders/container" import loadContainer from "./loaders/container"
import loadProviders from "./loaders/providers" import loadProviders from "./loaders/providers"
const migrationScriptOptions = {
moduleName: Modules.AUTHENTICATION,
models: Models,
pathToMigrations: __dirname + "/migrations",
}
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
const service = AuthenticationModuleService const service = AuthenticationModuleService
const loaders = [loadContainer, loadConnection, loadProviders] as any const loaders = [loadContainer, loadConnection, loadProviders] as any
export const moduleDefinition: ModuleExports = { export const moduleDefinition: ModuleExports = {
service, service,
loaders, loaders,
runMigrations,
revertMigration,
} }
+6 -19
View File
@@ -1,23 +1,10 @@
import { Modules } from "@medusajs/modules-sdk" import {
import { ModulesSdkUtils } from "@medusajs/utils" moduleDefinition,
import * as Models from "@models" revertMigration,
import { moduleDefinition } from "./module-definition" runMigrations,
} from "./module-definition"
export default moduleDefinition export default moduleDefinition
export { revertMigration, runMigrations }
const migrationScriptOptions = {
moduleName: Modules.CART,
models: Models,
pathToMigrations: __dirname + "/migrations",
}
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
export * from "./initialize" export * from "./initialize"
export * from "./loaders"
+18
View File
@@ -1,12 +1,30 @@
import { Modules } from "@medusajs/modules-sdk"
import { ModuleExports } from "@medusajs/types" import { ModuleExports } from "@medusajs/types"
import { ModulesSdkUtils } from "@medusajs/utils"
import * as Models from "@models"
import loadConnection from "./loaders/connection" import loadConnection from "./loaders/connection"
import loadContainer from "./loaders/container" import loadContainer from "./loaders/container"
import { CartModuleService } from "./services" import { CartModuleService } from "./services"
const migrationScriptOptions = {
moduleName: Modules.CART,
models: Models,
pathToMigrations: __dirname + "/migrations",
}
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
const service = CartModuleService const service = CartModuleService
const loaders = [loadContainer, loadConnection] as any const loaders = [loadContainer, loadConnection] as any
export const moduleDefinition: ModuleExports = { export const moduleDefinition: ModuleExports = {
service, service,
loaders, loaders,
runMigrations,
revertMigration,
} }
+6 -20
View File
@@ -1,24 +1,10 @@
import { Modules } from "@medusajs/modules-sdk" import {
import { ModulesSdkUtils } from "@medusajs/utils" moduleDefinition,
import * as Models from "@models" revertMigration,
runMigrations,
import { moduleDefinition } from "./module-definition" } from "./module-definition"
export default moduleDefinition export default moduleDefinition
export { revertMigration, runMigrations }
const migrationScriptOptions = {
moduleName: Modules.CUSTOMER,
models: Models,
pathToMigrations: __dirname + "/migrations",
}
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
export const runMigration = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
export * from "./initialize" export * from "./initialize"
export * from "./loaders"
@@ -1,12 +1,31 @@
import { Modules } from "@medusajs/modules-sdk"
import { ModuleExports } from "@medusajs/types" import { ModuleExports } from "@medusajs/types"
import { ModulesSdkUtils } from "@medusajs/utils"
import * as Models from "@models"
import { CustomerModuleService } from "@services" import { CustomerModuleService } from "@services"
import loadConnection from "./loaders/connection" import loadConnection from "./loaders/connection"
import loadContainer from "./loaders/container" import loadContainer from "./loaders/container"
const migrationScriptOptions = {
moduleName: Modules.CUSTOMER,
models: Models,
pathToMigrations: __dirname + "/migrations",
}
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
const service = CustomerModuleService const service = CustomerModuleService
const loaders = [loadContainer, loadConnection] as any const loaders = [loadContainer, loadConnection] as any
export const moduleDefinition: ModuleExports = { export const moduleDefinition: ModuleExports = {
service, service,
loaders, loaders,
runMigrations,
revertMigration,
} }
-2
View File
@@ -1,8 +1,6 @@
import { revertMigration, runMigrations } from "./migrations/run-migration"
import { moduleDefinition } from "./module-definition" import { moduleDefinition } from "./module-definition"
export default moduleDefinition export default moduleDefinition
export * from "./initialize" export * from "./initialize"
export { revertMigration, runMigrations } from "./migrations/run-migration" export { revertMigration, runMigrations } from "./migrations/run-migration"
export * from "./types"
+2 -2
View File
@@ -51,7 +51,7 @@ async function loadLegacyModulesEntities(configModules, container) {
continue continue
} }
let modulePath = isString(moduleConfig) const modulePath = isString(moduleConfig)
? moduleConfig ? moduleConfig
: (moduleConfig as InternalModuleDeclaration).resolve ?? : (moduleConfig as InternalModuleDeclaration).resolve ??
(definition.defaultPackage as string) (definition.defaultPackage as string)
@@ -69,7 +69,7 @@ async function loadLegacyModulesEntities(configModules, container) {
continue continue
} }
const module = await import(modulePath) const module = await import(modulePath as string)
if (module.default?.models) { if (module.default?.models) {
module.default.models.map((model) => module.default.models.map((model) =>
+2
View File
@@ -7,6 +7,7 @@ import {
import { upperCaseFirst } from "@medusajs/utils" import { upperCaseFirst } from "@medusajs/utils"
export enum Modules { export enum Modules {
LINK = "linkModules",
EVENT_BUS = "eventBus", EVENT_BUS = "eventBus",
STOCK_LOCATION = "stockLocationService", STOCK_LOCATION = "stockLocationService",
INVENTORY = "inventoryService", INVENTORY = "inventoryService",
@@ -35,6 +36,7 @@ export enum ModuleRegistrationName {
} }
export const MODULE_PACKAGE_NAMES = { export const MODULE_PACKAGE_NAMES = {
[Modules.LINK]: "@medusajs/link-modules",
[Modules.PRODUCT]: "@medusajs/product", [Modules.PRODUCT]: "@medusajs/product",
[Modules.EVENT_BUS]: "@medusajs/event-bus-local", [Modules.EVENT_BUS]: "@medusajs/event-bus-local",
[Modules.STOCK_LOCATION]: "@medusajs/stock-location", [Modules.STOCK_LOCATION]: "@medusajs/stock-location",
@@ -121,11 +121,13 @@ export async function loadInternalModule(
} }
export async function loadModuleMigrations( export async function loadModuleMigrations(
resolution: ModuleResolution resolution: ModuleResolution,
moduleExports?: ModuleExports
): Promise<[Function | undefined, Function | undefined]> { ): Promise<[Function | undefined, Function | undefined]> {
let loadedModule: ModuleExports let loadedModule: ModuleExports
try { try {
loadedModule = await import(resolution.resolutionPath as string) loadedModule =
moduleExports ?? (await import(resolution.resolutionPath as string))
return [loadedModule.runMigrations, loadedModule.revertMigration] return [loadedModule.runMigrations, loadedModule.revertMigration]
} catch { } catch {
+72 -41
View File
@@ -1,12 +1,15 @@
import { mergeTypeDefs } from "@graphql-tools/merge"
import { makeExecutableSchema } from "@graphql-tools/schema"
import { RemoteFetchDataCallback } from "@medusajs/orchestration"
import { import {
ExternalModuleDeclaration, ExternalModuleDeclaration,
InternalModuleDeclaration, InternalModuleDeclaration,
LoadedModule, LoadedModule,
LoaderOptions,
MedusaContainer, MedusaContainer,
MODULE_RESOURCE_TYPE, MODULE_RESOURCE_TYPE,
MODULE_SCOPE, MODULE_SCOPE,
ModuleDefinition, ModuleDefinition,
ModuleExports,
ModuleJoinerConfig, ModuleJoinerConfig,
ModuleServiceInitializeOptions, ModuleServiceInitializeOptions,
RemoteJoinerQuery, RemoteJoinerQuery,
@@ -15,23 +18,21 @@ import {
ContainerRegistrationKeys, ContainerRegistrationKeys,
createMedusaContainer, createMedusaContainer,
isObject, isObject,
isString,
ModulesSdkUtils, ModulesSdkUtils,
} from "@medusajs/utils" } from "@medusajs/utils"
import { asValue } from "awilix"
import { import {
MODULE_PACKAGE_NAMES, MODULE_PACKAGE_NAMES,
ModuleRegistrationName, ModuleRegistrationName,
Modules, Modules,
} from "./definitions" } from "./definitions"
import { MedusaModule } from "./medusa-module" import { MedusaModule } from "./medusa-module"
import { RemoteFetchDataCallback } from "@medusajs/orchestration"
import { RemoteLink } from "./remote-link" import { RemoteLink } from "./remote-link"
import { RemoteQuery } from "./remote-query" import { RemoteQuery } from "./remote-query"
import { cleanGraphQLSchema } from "./utils" import { cleanGraphQLSchema } from "./utils"
import { asValue } from "awilix"
import { makeExecutableSchema } from "@graphql-tools/schema"
import { mergeTypeDefs } from "@graphql-tools/merge"
const LinkModulePackage = "@medusajs/link-modules" const LinkModulePackage = MODULE_PACKAGE_NAMES[Modules.LINK]
export type RunMigrationFn = ( export type RunMigrationFn = (
options?: ModuleServiceInitializeOptions, options?: ModuleServiceInitializeOptions,
@@ -71,6 +72,7 @@ async function loadModules(modulesConfig, sharedContainer) {
Object.keys(modulesConfig).map(async (moduleName) => { Object.keys(modulesConfig).map(async (moduleName) => {
const mod = modulesConfig[moduleName] const mod = modulesConfig[moduleName]
let path: string let path: string
let moduleExports: ModuleExports | undefined = undefined
let declaration: any = {} let declaration: any = {}
let definition: ModuleDefinition | undefined = undefined let definition: ModuleDefinition | undefined = undefined
@@ -78,6 +80,9 @@ async function loadModules(modulesConfig, sharedContainer) {
const mod_ = mod as unknown as InternalModuleDeclaration const mod_ = mod as unknown as InternalModuleDeclaration
path = mod_.resolve ?? MODULE_PACKAGE_NAMES[moduleName] path = mod_.resolve ?? MODULE_PACKAGE_NAMES[moduleName]
definition = mod_.definition definition = mod_.definition
moduleExports = !isString(mod_.resolve)
? (mod_.resolve as ModuleExports)
: undefined
declaration = { ...mod } declaration = { ...mod }
delete declaration.definition delete declaration.definition
} else { } else {
@@ -98,6 +103,7 @@ async function loadModules(modulesConfig, sharedContainer) {
declaration, declaration,
sharedContainer, sharedContainer,
moduleDefinition: definition, moduleDefinition: definition,
moduleExports,
})) as LoadedModule })) as LoadedModule
const service = loaded[moduleName] const service = loaded[moduleName]
@@ -119,9 +125,16 @@ async function loadModules(modulesConfig, sharedContainer) {
return allModules return allModules
} }
async function initializeLinks(config, linkModules, injectedDependencies) { async function initializeLinks({
config,
linkModules,
injectedDependencies,
moduleExports,
}) {
try { try {
const { initialize, runMigrations } = await import(LinkModulePackage) const { initialize, runMigrations } =
moduleExports ?? (await import(LinkModulePackage))
const linkResolution = await initialize( const linkResolution = await initialize(
config, config,
linkModules, linkModules,
@@ -140,6 +153,10 @@ async function initializeLinks(config, linkModules, injectedDependencies) {
} }
} }
function isMedusaModule(mod) {
return typeof mod?.initialize === "function"
}
function cleanAndMergeSchema(loadedSchema) { function cleanAndMergeSchema(loadedSchema) {
const { schema: cleanedSchema, notFound } = cleanGraphQLSchema(loadedSchema) const { schema: cleanedSchema, notFound } = cleanGraphQLSchema(loadedSchema)
const mergedSchema = mergeTypeDefs(cleanedSchema) const mergedSchema = mergeTypeDefs(cleanedSchema)
@@ -174,32 +191,28 @@ export type MedusaAppOutput = {
runMigrations: RunMigrationFn runMigrations: RunMigrationFn
} }
export async function MedusaApp( export async function MedusaApp({
{ sharedContainer,
sharedContainer, sharedResourcesConfig,
sharedResourcesConfig, servicesConfig,
servicesConfig, modulesConfigPath,
modulesConfigPath, modulesConfigFileName,
modulesConfigFileName, modulesConfig,
modulesConfig, linkModules,
linkModules, remoteFetchData,
remoteFetchData, injectedDependencies,
injectedDependencies, }: {
}: { sharedContainer?: MedusaContainer
sharedContainer?: MedusaContainer sharedResourcesConfig?: SharedResources
sharedResourcesConfig?: SharedResources loadedModules?: LoadedModule[]
loadedModules?: LoadedModule[] servicesConfig?: ModuleJoinerConfig[]
servicesConfig?: ModuleJoinerConfig[] modulesConfigPath?: string
modulesConfigPath?: string modulesConfigFileName?: string
modulesConfigFileName?: string modulesConfig?: MedusaModuleConfig
modulesConfig?: MedusaModuleConfig linkModules?: ModuleJoinerConfig | ModuleJoinerConfig[]
linkModules?: ModuleJoinerConfig | ModuleJoinerConfig[] remoteFetchData?: RemoteFetchDataCallback
remoteFetchData?: RemoteFetchDataCallback injectedDependencies?: any
injectedDependencies?: any } = {}): Promise<{
} = {
injectedDependencies: {},
}
): Promise<{
modules: Record<string, LoadedModule | LoadedModule[]> modules: Record<string, LoadedModule | LoadedModule[]>
link: RemoteLink | undefined link: RemoteLink | undefined
query: ( query: (
@@ -210,6 +223,8 @@ export async function MedusaApp(
notFound?: Record<string, Record<string, string>> notFound?: Record<string, Record<string, string>>
runMigrations: RunMigrationFn runMigrations: RunMigrationFn
}> { }> {
injectedDependencies ??= {}
const sharedContainer_ = createMedusaContainer({}, sharedContainer) const sharedContainer_ = createMedusaContainer({}, sharedContainer)
const modules: MedusaModuleConfig = const modules: MedusaModuleConfig =
@@ -241,8 +256,10 @@ export async function MedusaApp(
} }
// remove the link module from the modules // remove the link module from the modules
const linkModule = modules[LinkModulePackage] const linkModule = modules[LinkModulePackage] ?? modules[Modules.LINK]
delete modules[LinkModulePackage] delete modules[LinkModulePackage]
delete modules[Modules.LINK]
let linkModuleOptions = {} let linkModuleOptions = {}
if (isObject(linkModule)) { if (isObject(linkModule)) {
@@ -267,11 +284,12 @@ export async function MedusaApp(
remoteLink, remoteLink,
linkResolution, linkResolution,
runMigrations: linkModuleMigration, runMigrations: linkModuleMigration,
} = await initializeLinks( } = await initializeLinks({
linkModuleOptions, config: linkModuleOptions,
linkModules, linkModules,
injectedDependencies injectedDependencies,
) moduleExports: isMedusaModule(linkModule) ? linkModule : undefined,
})
const loadedSchema = getLoadedSchema() const loadedSchema = getLoadedSchema()
const { schema, notFound } = cleanAndMergeSchema(loadedSchema) const { schema, notFound } = cleanAndMergeSchema(loadedSchema)
@@ -294,16 +312,29 @@ export async function MedusaApp(
for (const moduleName of Object.keys(allModules)) { for (const moduleName of Object.keys(allModules)) {
const moduleResolution = MedusaModule.getModuleResolutions(moduleName) const moduleResolution = MedusaModule.getModuleResolutions(moduleName)
if (!moduleResolution.options?.database) {
moduleResolution.options ??= {}
moduleResolution.options.database = {
...(sharedResourcesConfig?.database ?? {}),
}
}
await MedusaModule.migrateUp( await MedusaModule.migrateUp(
moduleResolution.definition.key, moduleResolution.definition.key,
moduleResolution.resolutionPath as string, moduleResolution.resolutionPath as string,
moduleResolution.options moduleResolution.options,
moduleResolution.moduleExports
) )
} }
const linkModuleOpt = { ...linkModuleOptions }
linkModuleOpt.database ??= {
...(sharedResourcesConfig?.database ?? {}),
}
linkModuleMigration && linkModuleMigration &&
(await linkModuleMigration({ (await linkModuleMigration({
options: linkModuleOptions, options: linkModuleOpt,
injectedDependencies, injectedDependencies,
})) }))
} }
+12 -4
View File
@@ -438,7 +438,8 @@ export class MedusaModule {
public static async migrateUp( public static async migrateUp(
moduleKey: string, moduleKey: string,
modulePath: string, modulePath: string,
options?: Record<string, any> options?: Record<string, any>,
moduleExports?: ModuleExports
): Promise<void> { ): Promise<void> {
const moduleResolutions = registerMedusaModule(moduleKey, { const moduleResolutions = registerMedusaModule(moduleKey, {
scope: MODULE_SCOPE.INTERNAL, scope: MODULE_SCOPE.INTERNAL,
@@ -448,7 +449,10 @@ export class MedusaModule {
}) })
for (const mod in moduleResolutions) { for (const mod in moduleResolutions) {
const [migrateUp] = await loadModuleMigrations(moduleResolutions[mod]) const [migrateUp] = await loadModuleMigrations(
moduleResolutions[mod],
moduleExports
)
if (typeof migrateUp === "function") { if (typeof migrateUp === "function") {
await migrateUp({ await migrateUp({
@@ -462,7 +466,8 @@ export class MedusaModule {
public static async migrateDown( public static async migrateDown(
moduleKey: string, moduleKey: string,
modulePath: string, modulePath: string,
options?: Record<string, any> options?: Record<string, any>,
moduleExports?: ModuleExports
): Promise<void> { ): Promise<void> {
const moduleResolutions = registerMedusaModule(moduleKey, { const moduleResolutions = registerMedusaModule(moduleKey, {
scope: MODULE_SCOPE.INTERNAL, scope: MODULE_SCOPE.INTERNAL,
@@ -472,7 +477,10 @@ export class MedusaModule {
}) })
for (const mod in moduleResolutions) { for (const mod in moduleResolutions) {
const [, migrateDown] = await loadModuleMigrations(moduleResolutions[mod]) const [, migrateDown] = await loadModuleMigrations(
moduleResolutions[mod],
moduleExports
)
if (typeof migrateDown === "function") { if (typeof migrateDown === "function") {
await migrateDown({ await migrateDown({
+6 -19
View File
@@ -1,23 +1,10 @@
import { moduleDefinition } from "./module-definition" import {
import { Modules } from "@medusajs/modules-sdk" moduleDefinition,
import { ModulesSdkUtils } from "@medusajs/utils" revertMigration,
runMigrations,
import * as PaymentModels from "@models" } from "./module-definition"
export default moduleDefinition export default moduleDefinition
export { revertMigration, runMigrations }
const migrationScriptOptions = {
moduleName: Modules.PAYMENT,
models: PaymentModels,
pathToMigrations: __dirname + "/migrations",
}
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
export * from "./initialize" export * from "./initialize"
export * from "./loaders"
+20
View File
@@ -5,10 +5,30 @@ import { PaymentModuleService } from "@services"
import loadConnection from "./loaders/connection" import loadConnection from "./loaders/connection"
import loadContainer from "./loaders/container" import loadContainer from "./loaders/container"
import { Modules } from "@medusajs/modules-sdk"
import { ModulesSdkUtils } from "@medusajs/utils"
import * as PaymentModels from "@models"
const migrationScriptOptions = {
moduleName: Modules.PAYMENT,
models: PaymentModels,
pathToMigrations: __dirname + "/migrations",
}
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
const service = PaymentModuleService const service = PaymentModuleService
const loaders = [loadContainer, loadConnection] as any const loaders = [loadContainer, loadConnection] as any
export const moduleDefinition: ModuleExports = { export const moduleDefinition: ModuleExports = {
service, service,
loaders, loaders,
runMigrations,
revertMigration,
} }
+8 -19
View File
@@ -1,25 +1,14 @@
import { moduleDefinition } from "./module-definition" import {
import { Modules } from "@medusajs/modules-sdk" moduleDefinition,
import * as Models from "@models" revertMigration,
import { ModulesSdkUtils } from "@medusajs/utils" runMigrations,
} from "./module-definition"
export default moduleDefinition export default moduleDefinition
export { revertMigration, runMigrations }
const migrationScriptOptions = {
moduleName: Modules.PRICING,
models: Models,
pathToMigrations: __dirname + "/migrations",
}
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
export * from "./initialize" export * from "./initialize"
export * from "./types" // TODO: remove export from models and services
export * from "./loaders"
export * from "./models" export * from "./models"
export * from "./services" export * from "./services"
export * from "./types"
+18
View File
@@ -1,12 +1,30 @@
import { Modules } from "@medusajs/modules-sdk"
import { ModuleExports } from "@medusajs/types" import { ModuleExports } from "@medusajs/types"
import { ModulesSdkUtils } from "@medusajs/utils"
import * as Models from "@models"
import { PricingModuleService } from "@services" import { PricingModuleService } from "@services"
import loadConnection from "./loaders/connection" import loadConnection from "./loaders/connection"
import loadContainer from "./loaders/container" import loadContainer from "./loaders/container"
const migrationScriptOptions = {
moduleName: Modules.PRICING,
models: Models,
pathToMigrations: __dirname + "/migrations",
}
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
const service = PricingModuleService const service = PricingModuleService
const loaders = [loadContainer, loadConnection] as any const loaders = [loadContainer, loadConnection] as any
export const moduleDefinition: ModuleExports = { export const moduleDefinition: ModuleExports = {
service, service,
loaders, loaders,
runMigrations,
revertMigration,
} }
+8 -19
View File
@@ -1,25 +1,14 @@
import { moduleDefinition } from "./module-definition" import {
import { ModulesSdkUtils } from "@medusajs/utils" moduleDefinition,
import { Modules } from "@medusajs/modules-sdk" revertMigration,
import * as ProductModels from "@models" runMigrations,
} from "./module-definition"
export default moduleDefinition export default moduleDefinition
export { revertMigration, runMigrations }
const migrationScriptOptions = {
moduleName: Modules.PRODUCT,
models: ProductModels,
pathToMigrations: __dirname + "/migrations",
}
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
export * from "./initialize" export * from "./initialize"
export * from "./types" // TODO: remove export from models and services
export * from "./loaders"
export * from "./models" export * from "./models"
export * from "./services" export * from "./services"
export * from "./types"
+19
View File
@@ -3,10 +3,29 @@ import { ProductModuleService } from "@services"
import loadConnection from "./loaders/connection" import loadConnection from "./loaders/connection"
import loadContainer from "./loaders/container" import loadContainer from "./loaders/container"
import { Modules } from "@medusajs/modules-sdk"
import { ModulesSdkUtils } from "@medusajs/utils"
import * as ProductModels from "@models"
const migrationScriptOptions = {
moduleName: Modules.PRODUCT,
models: ProductModels,
pathToMigrations: __dirname + "/migrations",
}
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
const service = ProductModuleService const service = ProductModuleService
const loaders = [loadContainer, loadConnection] as any const loaders = [loadContainer, loadConnection] as any
export const moduleDefinition: ModuleExports = { export const moduleDefinition: ModuleExports = {
service, service,
loaders, loaders,
runMigrations,
revertMigration,
} }
+6 -18
View File
@@ -1,22 +1,10 @@
import { moduleDefinition } from "./module-definition" import {
import { Modules } from "@medusajs/modules-sdk" moduleDefinition,
import * as Models from "@models" revertMigration,
import { ModulesSdkUtils } from "@medusajs/utils" runMigrations,
} from "./module-definition"
export default moduleDefinition export default moduleDefinition
export { revertMigration, runMigrations }
const migrationScriptOptions = {
moduleName: Modules.PROMOTION,
models: Models,
pathToMigrations: __dirname + "/migrations",
}
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
export * from "./initialize" export * from "./initialize"
export * from "./loaders"
@@ -1,12 +1,30 @@
import { Modules } from "@medusajs/modules-sdk"
import { ModuleExports } from "@medusajs/types" import { ModuleExports } from "@medusajs/types"
import { ModulesSdkUtils } from "@medusajs/utils"
import * as Models from "@models"
import { PromotionModuleService } from "@services" import { PromotionModuleService } from "@services"
import loadConnection from "./loaders/connection" import loadConnection from "./loaders/connection"
import loadContainer from "./loaders/container" import loadContainer from "./loaders/container"
const migrationScriptOptions = {
moduleName: Modules.PROMOTION,
models: Models,
pathToMigrations: __dirname + "/migrations",
}
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
migrationScriptOptions
)
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
migrationScriptOptions
)
const service = PromotionModuleService const service = PromotionModuleService
const loaders = [loadContainer, loadConnection] as any const loaders = [loadContainer, loadConnection] as any
export const moduleDefinition: ModuleExports = { export const moduleDefinition: ModuleExports = {
service, service,
loaders, loaders,
runMigrations,
revertMigration,
} }
-2
View File
@@ -1,8 +1,6 @@
import { revertMigration, runMigrations } from "./migrations/run-migration"
import { moduleDefinition } from "./module-definition" import { moduleDefinition } from "./module-definition"
export default moduleDefinition export default moduleDefinition
export * from "./initialize" export * from "./initialize"
export { revertMigration, runMigrations } from "./migrations/run-migration" export { revertMigration, runMigrations } from "./migrations/run-migration"
export * from "./types" export * from "./types"
@@ -1,9 +1,9 @@
import StockLocationService from "./services/stock-location"
import loadConnection from "./loaders/connection"
import * as StockLocationModels from "./models"
import { ModuleExports } from "@medusajs/types" import { ModuleExports } from "@medusajs/types"
import loadConnection from "./loaders/connection"
import migrations from "./migrations" import migrations from "./migrations"
import { revertMigration, runMigrations } from "./migrations/run-migration" import { revertMigration, runMigrations } from "./migrations/run-migration"
import * as StockLocationModels from "./models"
import StockLocationService from "./services/stock-location"
const service = StockLocationService const service = StockLocationService
const loaders = [loadConnection] const loaders = [loadConnection]
+9 -3
View File
@@ -36,7 +36,7 @@ export type InternalModuleDeclaration = {
resources: MODULE_RESOURCE_TYPE resources: MODULE_RESOURCE_TYPE
dependencies?: string[] dependencies?: string[]
definition?: ModuleDefinition // That represent the definition of the module, such as the one we have for the medusa supported modules. This property is used for custom made modules. definition?: ModuleDefinition // That represent the definition of the module, such as the one we have for the medusa supported modules. This property is used for custom made modules.
resolve?: string resolve?: string | ModuleExports
options?: Record<string, unknown> options?: Record<string, unknown>
/** /**
* If multiple modules are registered with the same key, the alias can be used to differentiate them * If multiple modules are registered with the same key, the alias can be used to differentiate them
@@ -227,14 +227,20 @@ export declare type ModuleJoinerRelationship = JoinerRelationship & {
export type ModuleExports = { export type ModuleExports = {
service: Constructor<any> service: Constructor<any>
loaders?: ModuleLoaderFunction[] loaders?: ModuleLoaderFunction[]
/**
* @deprecated property will be removed in future versions
*/
migrations?: any[] migrations?: any[]
/**
* @deprecated property will be removed in future versions
*/
models?: Constructor<any>[] models?: Constructor<any>[]
runMigrations?( runMigrations?(
options: LoaderOptions, options: LoaderOptions<any>,
moduleDeclaration?: InternalModuleDeclaration moduleDeclaration?: InternalModuleDeclaration
): Promise<void> ): Promise<void>
revertMigration?( revertMigration?(
options: LoaderOptions, options: LoaderOptions<any>,
moduleDeclaration?: InternalModuleDeclaration moduleDeclaration?: InternalModuleDeclaration
): Promise<void> ): Promise<void>
} }