import { z } from 'zod'; import { DATA_LIMIT_METRIC } from '@marzneshin/modules/users'; export const UserSchema = z.object({ username: z.string().min(1, { message: 'Username is required' }), note: z.string().nullable(), data_limit: z .union([z.string().transform((str) => (Number(str))), z.number()]) .refine(val => val >= 0, { message: 'The minimum number is 0' }) .transform((val) => (Math.round(val)) * DATA_LIMIT_METRIC) .nullable() .optional(), data_limit_reset_strategy: z .enum(["no_reset", "day", "week", "month", "year"]) .or(z.number()) .or(z.string()) .nullable().optional(), expire_strategy: z.enum(["never", "fixed_date", "start_on_first_use"]), usage_duration: z.number().nullable().optional(), activation_deadline: z .string() .or(z.date()) .nullable() .optional(), expire_date: z .string() .or(z.date()) .nullable() .optional(), service_ids: z .array(z.number().or(z.string())) .nonempty({ message: 'At least one service is required' }) .transform((v) => v.map(Number)), }); export type UserMutationType = z.infer;