Files
medusa-store/packages/modules/link-modules/src/services/dynamic-service-class.ts

39 lines
1.1 KiB
TypeScript

import {
Constructor,
ILinkModule,
ModuleJoinerConfig,
} from "@medusajs/framework/types"
import { isDefined } from "@medusajs/framework/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 {
override __joinerConfig(): ModuleJoinerConfig {
return joinerConfig_ as ModuleJoinerConfig
}
}
}
export function getReadOnlyModuleService(joinerConfig: ModuleJoinerConfig) {
return class ReadOnlyLinkService {
__joinerConfig(): ModuleJoinerConfig {
return joinerConfig as ModuleJoinerConfig
}
}
}