Files
medusa-store/packages/modules/link-modules/src/services/dynamic-service-class.ts
Adrien de Peretti 7b84d854f0 Feat/mikro orm based linkable (#7944)
**What**
- Generate simple linkable for mikro orm based modules 
- fix module util
- fix joiner config builder
- fix define link relationship extension
- fix migrations not loading custom links
2024-07-04 13:30:47 +00:00

35 lines
1.1 KiB
TypeScript

import { Constructor, ILinkModule, ModuleJoinerConfig } from "@medusajs/types"
import { isDefined } from "@medusajs/utils"
import { LinkModuleService } from "@services"
export function getModuleService(
joinerConfig: ModuleJoinerConfig
): Constructor<ILinkModule> {
const joinerConfig_ = JSON.parse(JSON.stringify(joinerConfig))
const databaseConfig = joinerConfig_.databaseConfig
delete joinerConfig_.databaseConfig
// If extraDataFields is not defined, pick the fields to populate and validate from the
// database config if any fields are provided.
if (!isDefined(joinerConfig_.extraDataFields)) {
joinerConfig_.extraDataFields = Object.keys(
databaseConfig?.extraFields || {}
)
}
return class LinkService extends LinkModuleService<unknown> {
override __joinerConfig(): ModuleJoinerConfig {
return joinerConfig_ as ModuleJoinerConfig
}
}
}
export function getReadOnlyModuleService(joinerConfig: ModuleJoinerConfig) {
return class ReadOnlyLinkService {
__joinerConfig(): ModuleJoinerConfig {
return joinerConfig as ModuleJoinerConfig
}
}
}