Add commission types
This commit is contained in:
34
src/schemas/commissionType.ts
Normal file
34
src/schemas/commissionType.ts
Normal file
@ -0,0 +1,34 @@
|
||||
import * as z from "zod/v4";
|
||||
|
||||
const rangePattern = /^\d{1,3}–\d{1,3}$/;
|
||||
|
||||
const optionField = z.object({
|
||||
optionId: z.string(),
|
||||
price: z.number().optional(),
|
||||
pricePercent: z.number().optional(),
|
||||
priceRange: z.string().regex(rangePattern, "Format must be like '10–80'").optional(),
|
||||
});
|
||||
|
||||
const extraField = z.object({
|
||||
extraId: z.string(),
|
||||
price: z.number().optional(),
|
||||
pricePercent: z.number().optional(),
|
||||
priceRange: z.string().regex(rangePattern, "Format must be like '10–80'").optional(),
|
||||
});
|
||||
|
||||
const customInputsField = z.object({
|
||||
customInputId: z.string(),
|
||||
inputType: z.string(),
|
||||
label: z.string(),
|
||||
required: z.boolean(),
|
||||
});
|
||||
|
||||
export const commissionTypeSchema = z.object({
|
||||
name: z.string().min(1, "Name is required. Min 1 character."),
|
||||
description: z.string().optional(),
|
||||
options: z.array(optionField).optional(),
|
||||
extras: z.array(extraField).optional(),
|
||||
customInputs: z.array(customInputsField).optional(),
|
||||
})
|
||||
|
||||
export type commissionTypeSchema = z.infer<typeof commissionTypeSchema>
|
||||
Reference in New Issue
Block a user