fix(medusa): Admin validator filtering and pagination (#9748)

**What**
Fix usage of $and and $or operator and pagination inclusion
This commit is contained in:
Adrien de Peretti
2024-10-24 11:44:14 +00:00
committed by GitHub
parent e087073121
commit 471f7e4a10
29 changed files with 475 additions and 418 deletions
@@ -1,5 +1,8 @@
import { z } from "zod"
import { booleanString } from "../../utils/common-validators"
import {
applyAndAndOrOperators,
booleanString,
} from "../../utils/common-validators"
import {
createFindParams,
createOperatorMap,
@@ -17,33 +20,33 @@ export const AdminCustomerGroupInCustomerParams = z.object({
deleted_at: createOperatorMap().optional(),
})
export const AdminCustomersParamsFields = z.object({
q: z.string().optional(),
id: z.union([z.string(), z.array(z.string())]).optional(),
email: z.union([z.string(), z.array(z.string())]).optional(),
groups: z
.union([
AdminCustomerGroupInCustomerParams,
z.string(),
z.array(z.string()),
])
.optional(),
company_name: z.union([z.string(), z.array(z.string())]).optional(),
first_name: z.union([z.string(), z.array(z.string())]).optional(),
last_name: z.union([z.string(), z.array(z.string())]).optional(),
has_account: booleanString().optional(),
created_by: z.union([z.string(), z.array(z.string())]).optional(),
created_at: createOperatorMap().optional(),
updated_at: createOperatorMap().optional(),
deleted_at: createOperatorMap().optional(),
})
export const AdminCustomersParams = createFindParams({
limit: 50,
offset: 0,
}).merge(
z.object({
q: z.string().optional(),
id: z.union([z.string(), z.array(z.string())]).optional(),
email: z.union([z.string(), z.array(z.string())]).optional(),
groups: z
.union([
AdminCustomerGroupInCustomerParams,
z.string(),
z.array(z.string()),
])
.optional(),
company_name: z.union([z.string(), z.array(z.string())]).optional(),
first_name: z.union([z.string(), z.array(z.string())]).optional(),
last_name: z.union([z.string(), z.array(z.string())]).optional(),
has_account: booleanString().optional(),
created_by: z.union([z.string(), z.array(z.string())]).optional(),
created_at: createOperatorMap().optional(),
updated_at: createOperatorMap().optional(),
deleted_at: createOperatorMap().optional(),
$and: z.lazy(() => AdminCustomersParams.array()).optional(),
$or: z.lazy(() => AdminCustomersParams.array()).optional(),
})
)
})
.merge(AdminCustomersParamsFields)
.merge(applyAndAndOrOperators(AdminCustomersParamsFields))
export const CreateCustomer = z.object({
email: z.string().email().nullish(),