Files
medusa-store/packages/customer/src/loaders/container.ts
T
2024-01-19 10:18:54 +00:00

53 lines
1.5 KiB
TypeScript

import * as defaultRepositories from "@repositories"
import { LoaderOptions } from "@medusajs/modules-sdk"
import { ModulesSdkTypes } from "@medusajs/types"
import { loadCustomRepositories } from "@medusajs/utils"
import * as defaultServices from "@services"
import { asClass } from "awilix"
export default async ({
container,
options,
}: LoaderOptions<
| ModulesSdkTypes.ModuleServiceInitializeOptions
| ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions
>): Promise<void> => {
const customRepositories = (
options as ModulesSdkTypes.ModuleServiceInitializeCustomDataLayerOptions
)?.repositories
container.register({
customerService: asClass(defaultServices.CustomerService).singleton(),
addressService: asClass(defaultServices.AddressService).singleton(),
customerGroupService: asClass(
defaultServices.CustomerGroupService
).singleton(),
})
if (customRepositories) {
loadCustomRepositories({
defaultRepositories,
customRepositories,
container,
})
} else {
loadDefaultRepositories({ container })
}
}
function loadDefaultRepositories({ container }) {
container.register({
baseRepository: asClass(defaultRepositories.BaseRepository).singleton(),
customerRepository: asClass(
defaultRepositories.CustomerRepository
).singleton(),
addressRepository: asClass(
defaultRepositories.AddressRepository
).singleton(),
customerGroupRepository: asClass(
defaultRepositories.CustomerGroupRepository
).singleton(),
})
}