Feat: Add customer search controller (#1111)

* add controllers directory and loaders

* move controllers to pure functions

* controller refactor

* update imports
This commit is contained in:
Philip Korsholm
2022-03-09 10:55:05 +01:00
committed by GitHub
parent daf49bcaf3
commit 5f5a2af30b
4 changed files with 57 additions and 34 deletions
@@ -0,0 +1,2 @@
import listAndCount from "./list-customers"
export default { listAndCount }
@@ -0,0 +1,49 @@
import { omit, pickBy } from "lodash"
import { AdminGetCustomersParams } from "../../api/routes/admin/customers/list-customers"
import { AdminCustomersListRes } from "../../api"
import { CustomerService } from "../../services"
import { FindConfig } from "../../types/common"
import { validator } from "../../utils/validator"
import { Customer } from "../../models/customer"
const listAndCount = async (
scope,
query,
body,
context = {}
): Promise<AdminCustomersListRes> => {
const validatedQueryParams = await validator(AdminGetCustomersParams, query)
const customerService: CustomerService = scope.resolve("customerService")
let expandFields: string[] = []
if (validatedQueryParams.expand) {
expandFields = validatedQueryParams.expand.split(",")
}
const listConfig: FindConfig<Customer> = {
relations: expandFields,
skip: validatedQueryParams.offset,
take: validatedQueryParams.limit,
}
const filterableFields = omit(validatedQueryParams, [
"limit",
"offset",
"expand",
])
const [customers, count] = await customerService.listAndCount(
pickBy(filterableFields, (val) => typeof val !== "undefined"),
listConfig
)
return {
customers,
count,
offset: validatedQueryParams.offset,
limit: validatedQueryParams.limit,
}
}
export default listAndCount