Files
medusa-store/packages/medusa/src/api/admin/customer-groups/validators.ts
Adrien de Peretti 471f7e4a10 fix(medusa): Admin validator filtering and pagination (#9748)
**What**
Fix usage of $and and $or operator and pagination inclusion
2024-10-24 11:44:14 +00:00

72 lines
2.4 KiB
TypeScript

import { z } from "zod"
import {
createFindParams,
createOperatorMap,
createSelectParams,
} from "../../utils/validators"
import { applyAndAndOrOperators } from "../../utils/common-validators"
export type AdminGetCustomerGroupParamsType = z.infer<
typeof AdminGetCustomerGroupParams
>
export const AdminGetCustomerGroupParams = createSelectParams()
export const AdminCustomerInGroupFilters = z.object({
id: z.union([z.string(), z.array(z.string())]).optional(),
email: z
.union([z.string(), z.array(z.string()), createOperatorMap()])
.optional(),
default_billing_address_id: z
.union([z.string(), z.array(z.string())])
.optional(),
default_shipping_address_id: z
.union([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(),
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 AdminGetCustomerGroupsParamsFields = z.object({
q: z.string().optional(),
id: z.union([z.string(), z.array(z.string())]).optional(),
name: z.union([z.string(), z.array(z.string())]).optional(),
customers: z
.union([z.string(), z.array(z.string()), AdminCustomerInGroupFilters])
.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 type AdminGetCustomerGroupsParamsType = z.infer<
typeof AdminGetCustomerGroupsParams
>
export const AdminGetCustomerGroupsParams = createFindParams({
limit: 50,
offset: 0,
})
.merge(AdminGetCustomerGroupsParamsFields)
.merge(applyAndAndOrOperators(AdminGetCustomerGroupsParamsFields))
export type AdminCreateCustomerGroupType = z.infer<
typeof AdminCreateCustomerGroup
>
export const AdminCreateCustomerGroup = z.object({
name: z.string(),
metadata: z.record(z.unknown()).nullish(),
})
export type AdminUpdateCustomerGroupType = z.infer<
typeof AdminUpdateCustomerGroup
>
export const AdminUpdateCustomerGroup = z.object({
name: z.string().optional(),
metadata: z.record(z.unknown()).nullish(),
})