* chore(): Move peer deps into a single package and re export from framework * WIP * update core packages * update cli and deps * update medusa * update exports path * remove analyze * update modules deps * finalise changes * fix yarn * fix import * Refactor peer dependencies into a single package Consolidate peer dependencies into one package and re-export from the framework. * update changeset * Update .changeset/brown-cows-sleep.md Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com> * rm deps * fix deps * increase timeout * upgrade version * update versions * update versions * fixes * update lock * fix missing import * fix missing import --------- Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
69 lines
2.0 KiB
TypeScript
69 lines
2.0 KiB
TypeScript
import { BaseRepository, getLinkRepository } from "@repositories"
|
|
import { LinkService, getModuleService } from "@services"
|
|
|
|
import {
|
|
InternalModuleDeclaration,
|
|
LoaderOptions,
|
|
ModuleJoinerConfig,
|
|
ModulesSdkTypes,
|
|
} from "@medusajs/framework/types"
|
|
import {
|
|
composeLinkName,
|
|
composeTableName,
|
|
simpleHash,
|
|
toPascalCase,
|
|
} from "@medusajs/framework/utils"
|
|
import { asClass, asValue } from "@medusajs/framework/awilix"
|
|
export function containerLoader(entity, joinerConfig: ModuleJoinerConfig) {
|
|
return async (
|
|
{
|
|
options,
|
|
container,
|
|
}: LoaderOptions<
|
|
| ModulesSdkTypes.ModuleServiceInitializeOptions
|
|
| ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions
|
|
>,
|
|
moduleDeclaration?: InternalModuleDeclaration
|
|
): Promise<void> => {
|
|
const [primary, foreign] = joinerConfig.relationships!
|
|
|
|
const serviceName = !joinerConfig.isReadOnlyLink
|
|
? joinerConfig.serviceName ??
|
|
composeLinkName(
|
|
primary.serviceName,
|
|
primary.foreignKey,
|
|
foreign.serviceName,
|
|
foreign.foreignKey
|
|
)
|
|
: simpleHash(JSON.stringify(joinerConfig.extends))
|
|
|
|
const entityName = toPascalCase(
|
|
"Link_" +
|
|
(joinerConfig.databaseConfig?.tableName ??
|
|
composeTableName(
|
|
primary.serviceName,
|
|
primary.foreignKey,
|
|
foreign.serviceName,
|
|
foreign.foreignKey
|
|
))
|
|
)
|
|
|
|
container.register({
|
|
joinerConfig: asValue(joinerConfig),
|
|
primaryKey: asValue(primary.foreignKey.split(",")),
|
|
foreignKey: asValue(foreign.foreignKey),
|
|
extraFields: asValue(
|
|
Object.keys(joinerConfig.databaseConfig?.extraFields || {})
|
|
),
|
|
|
|
linkModuleService: asClass(getModuleService(joinerConfig)).singleton(),
|
|
linkService: asClass(LinkService).singleton(),
|
|
|
|
baseRepository: asClass(BaseRepository).singleton(),
|
|
linkRepository: asClass(getLinkRepository(entity)).singleton(),
|
|
entityName: asValue(entityName),
|
|
serviceName: asValue(serviceName),
|
|
})
|
|
}
|
|
}
|