feat: customer module skeleton (#6126)
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
describe("Noop test", () => {
|
||||
it("noop check", async () => {
|
||||
expect(true).toBe(true)
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,23 @@
|
||||
import { DAL } from "@medusajs/types"
|
||||
import { ModulesSdkUtils } from "@medusajs/utils"
|
||||
import { Address } from "@models"
|
||||
import { CreateAddressDTO, UpdateAddressDTO } from "@types"
|
||||
|
||||
type InjectedDependencies = {
|
||||
addressRepository: DAL.RepositoryService
|
||||
}
|
||||
|
||||
export default class AddressService<
|
||||
TEntity extends Address = Address
|
||||
> extends ModulesSdkUtils.abstractServiceFactory<
|
||||
InjectedDependencies,
|
||||
{
|
||||
create: CreateAddressDTO
|
||||
update: UpdateAddressDTO
|
||||
}
|
||||
>(Address)<TEntity> {
|
||||
constructor(container: InjectedDependencies) {
|
||||
// @ts-ignore
|
||||
super(...arguments)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { DAL } from "@medusajs/types"
|
||||
import { ModulesSdkUtils } from "@medusajs/utils"
|
||||
import { CustomerGroup } from "@models"
|
||||
import { CreateCustomerGroupDTO, UpdateCustomerGroupDTO } from "@types"
|
||||
|
||||
type InjectedDependencies = {
|
||||
customerGroupRepository: DAL.RepositoryService
|
||||
}
|
||||
|
||||
export default class CustomerGroupService<
|
||||
TEntity extends CustomerGroup = CustomerGroup
|
||||
> extends ModulesSdkUtils.abstractServiceFactory<
|
||||
InjectedDependencies,
|
||||
{
|
||||
create: CreateCustomerGroupDTO
|
||||
update: UpdateCustomerGroupDTO
|
||||
}
|
||||
>(CustomerGroup)<TEntity> {
|
||||
constructor(container: InjectedDependencies) {
|
||||
// @ts-ignore
|
||||
super(...arguments)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
import {
|
||||
Context,
|
||||
DAL,
|
||||
FindConfig,
|
||||
ICustomerModuleService,
|
||||
InternalModuleDeclaration,
|
||||
ModuleJoinerConfig,
|
||||
CustomerTypes,
|
||||
} from "@medusajs/types"
|
||||
|
||||
import { InjectManager, MedusaContext } from "@medusajs/utils"
|
||||
import { joinerConfig } from "../joiner-config"
|
||||
import * as services from "../services"
|
||||
|
||||
type InjectedDependencies = {
|
||||
baseRepository: DAL.RepositoryService
|
||||
customerService: services.CustomerService
|
||||
addressService: services.AddressService
|
||||
customerGroupService: services.CustomerGroupService
|
||||
}
|
||||
|
||||
export default class CustomerModuleService implements ICustomerModuleService {
|
||||
protected baseRepository_: DAL.RepositoryService
|
||||
protected customerService_: services.CustomerService
|
||||
protected addressService_: services.AddressService
|
||||
protected customerGroupService_: services.CustomerGroupService
|
||||
|
||||
constructor(
|
||||
{
|
||||
baseRepository,
|
||||
customerService,
|
||||
addressService,
|
||||
customerGroupService,
|
||||
}: InjectedDependencies,
|
||||
protected readonly moduleDeclaration: InternalModuleDeclaration
|
||||
) {
|
||||
this.baseRepository_ = baseRepository
|
||||
this.customerService_ = customerService
|
||||
this.addressService_ = addressService
|
||||
this.customerGroupService_ = customerGroupService
|
||||
}
|
||||
|
||||
__joinerConfig(): ModuleJoinerConfig {
|
||||
return joinerConfig
|
||||
}
|
||||
|
||||
@InjectManager("baseRepository_")
|
||||
async retrieve(
|
||||
id: string,
|
||||
config: FindConfig<CustomerTypes.CustomerDTO> = {},
|
||||
@MedusaContext() sharedContext: Context = {}
|
||||
): Promise<CustomerTypes.CustomerDTO> {
|
||||
const customer = await this.customerService_.retrieve(
|
||||
id,
|
||||
config,
|
||||
sharedContext
|
||||
)
|
||||
|
||||
return await this.baseRepository_.serialize<CustomerTypes.CustomerDTO>(
|
||||
customer,
|
||||
{
|
||||
populate: true,
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@InjectManager("baseRepository_")
|
||||
async create(
|
||||
data: CustomerTypes.CreateCustomerDTO,
|
||||
@MedusaContext() sharedContext: Context = {}
|
||||
): Promise<CustomerTypes.CustomerDTO> {
|
||||
const [customer] = await this.customerService_.create([data], sharedContext)
|
||||
|
||||
return await this.baseRepository_.serialize<CustomerTypes.CustomerDTO>(
|
||||
customer,
|
||||
{
|
||||
populate: true,
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import { CreateCustomerDTO, DAL } from "@medusajs/types"
|
||||
import { ModulesSdkUtils } from "@medusajs/utils"
|
||||
import { Customer } from "@models"
|
||||
|
||||
type InjectedDependencies = {
|
||||
cartRepository: DAL.RepositoryService
|
||||
}
|
||||
|
||||
export default class CustomerService<
|
||||
TEntity extends Customer = Customer
|
||||
> extends ModulesSdkUtils.abstractServiceFactory<
|
||||
InjectedDependencies,
|
||||
{ create: CreateCustomerDTO }
|
||||
>(Customer)<TEntity> {
|
||||
constructor(container: InjectedDependencies) {
|
||||
// @ts-ignore
|
||||
super(...arguments)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
export { default as AddressService } from "./address"
|
||||
export { default as CustomerGroupService } from "./customer-group"
|
||||
export { default as CustomerService } from "./customer"
|
||||
export { default as CustomerModuleService } from "./customer-module"
|
||||
Reference in New Issue
Block a user