| 1 |
e3cb497 |
Dawsh |
1y ago |
import { z } from "zod"; |
| 2 |
e3cb497 |
Dawsh |
1y 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 |
e3cb497 |
Dawsh |
1y 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 |
e3cb497 |
Dawsh |
1y ago |
.union([z.string().transform((str) => Number(str)), z.number()]) |
| 9 |
e3cb497 |
Dawsh |
1y ago |
.refine((val) => val >= 0, { message: "The minimum number is 0" }) |
| 10 |
e3cb497 |
Dawsh |
1y 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() |
| 18 |
d377c4c |
Dawsh |
2y ago |
.optional(), |
| 19 |
e3cb497 |
Dawsh |
1y ago |
expire_strategy: z.enum(["never", "fixed_date", "start_on_first_use"]), |
| 20 |
dccebe5 |
Aslan |
1y ago |
usage_duration: z.number().max(9999 * 365 * 24 * 60 * 60, { message: "usage_duration must be less than 3649635" }) |
| 21 |
dccebe5 |
Aslan |
1y ago |
.nullable().optional(), |
| 22 |
e3cb497 |
Dawsh |
1y ago |
activation_deadline: z.string().or(z.date()).nullable().optional(), |
| 23 |
e3cb497 |
Dawsh |
1y ago |
expire_date: z.string().or(z.date()).nullable().optional(), |
| 24 |
d377c4c |
Dawsh |
2y ago |
service_ids: z |
| 25 |
d377c4c |
Dawsh |
2y ago |
.array(z.number().or(z.string())) |
| 26 |
e3cb497 |
Dawsh |
1y ago |
.nonempty({ message: "At least one service is required" }) |
| 27 |
d377c4c |
Dawsh |
2y ago |
.transform((v) => v.map(Number)), |
| 28 |
d377c4c |
Dawsh |
2y ago |
}); |
| 29 |
d377c4c |
Dawsh |
2y ago |
|
| 30 |
d377c4c |
Dawsh |
2y ago |
export type UserMutationType = z.infer<typeof UserSchema>; |