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