gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/users/domain/schema.ts · v0.6.4
Source
1 d377c4c Dawsh 2y ago import { z } from 'zod';
2 e6e6467 Dawsh 2y ago import { DATA_LIMIT_METRIC } from '@marzneshin/modules/users';
3 d377c4c Dawsh 2y ago
4 d377c4c Dawsh 2y ago export const UserSchema = z.object({
5 d377c4c Dawsh 2y ago username: z.string().min(1, { message: 'Username is required' }),
6 d377c4c Dawsh 2y ago note: z.string().nullable(),
7 d377c4c Dawsh 2y ago data_limit: z
8 ce6bb64 Mardin 2y ago .union([z.string().transform((str) => (Number(str))), z.number()])
9 d377c4c Dawsh 2y ago .refine(val => val >= 0, { message: 'The minimum number is 0' })
10 e381b12 Mardin 2y ago .transform((val) => (Math.round(val)) * DATA_LIMIT_METRIC)
11 d377c4c Dawsh 2y ago .nullable()
12 d377c4c Dawsh 2y ago .optional(),
13 d377c4c Dawsh 2y ago data_limit_reset_strategy: z
14 d377c4c Dawsh 2y ago .enum(["no_reset", "day", "week", "month", "year"])
15 d377c4c Dawsh 2y ago .or(z.number())
16 d377c4c Dawsh 2y ago .or(z.string())
17 d377c4c Dawsh 2y ago .nullable().optional(),
18 d377c4c Dawsh 2y ago expire_strategy: z.enum(["never", "fixed_date", "start_on_first_use"]),
19 d377c4c Dawsh 2y ago usage_duration: z.number().nullable().optional(),
20 d377c4c Dawsh 2y ago activation_deadline: z
21 d377c4c Dawsh 2y ago .string()
22 d377c4c Dawsh 2y ago .or(z.date())
23 d377c4c Dawsh 2y ago .nullable()
24 d377c4c Dawsh 2y ago .optional(),
25 d377c4c Dawsh 2y ago expire_date: z
26 d377c4c Dawsh 2y ago .string()
27 d377c4c Dawsh 2y ago .or(z.date())
28 d377c4c Dawsh 2y ago .nullable()
29 d377c4c Dawsh 2y ago .optional(),
30 d377c4c Dawsh 2y ago service_ids: z
31 d377c4c Dawsh 2y ago .array(z.number().or(z.string()))
32 d377c4c Dawsh 2y ago .nonempty({ message: 'At least one service is required' })
33 d377c4c Dawsh 2y ago .transform((v) => v.map(Number)),
34 d377c4c Dawsh 2y ago });
35 d377c4c Dawsh 2y ago
36 d377c4c Dawsh 2y ago export type UserMutationType = z.infer<typeof UserSchema>;