https://dev.kronoz.win/r/marzneshin.git
1import { z } from 'zod';
2import { DATA_LIMIT_METRIC } from '@marzneshin/features/users';
3
4export const UserSchema = z.object({
5 username: z.string().min(1, { message: 'Username is required' }),
6 note: z.string().nullable(),
7 data_limit: z
8 .string()
9 .min(0, 'The minimum number is 0')
10 .or(z.number())
11 .nullable()
12 .optional()
13 .transform((str) => {
14 if (str) return Number((parseFloat(String(str)) * DATA_LIMIT_METRIC).toFixed(5));
15 return 0;
16 }),
17 expire: z.string().or(z.number()).nullable().optional(),
18 data_limit_reset_strategy: z.string().nullable().optional(),
19 status: z.string(),
20 on_hold_expire_duration: z.number().nullable().optional(),
21 on_hold_timeout: z.string().nullable().optional(),
22 services: z.array(z.number().or(z.string())).nonempty({ message: 'At least one service is required' })
23 .transform((v) => v.map(Number)),
24});