eletrotupi / tcc/ api/src/schemas/user.schema.ts30f98b88ba3e0926a1a93ed3c7a9e2618d9ff920
833 B | 27 lines Raw
1
import { z } from "zod";
2

3
export const CreateUserSchema = z.object({
4
  firstName: z.string(),
5
  lastName: z.string().optional(),
6
  email: z.string().email(),
7
  password: z.string().min(6),
8
  pushToken: z.string().optional(),
9
  acceptedTerms: z.literal(true),
10
});
11

12
export const UpdateUserSchema = CreateUserSchema.omit({ acceptedTerms: true })
13
  .partial()
14
  .extend({
15
    id: z.number(),
16
  });
17

18
export type CreateUserInput = z.infer<typeof CreateUserSchema>;
19
export type UpdateUserInput = z.infer<typeof UpdateUserSchema>;
20

21
export const UpdateUserPreferencesSchema = z.object({
22
  pushEnabled: z.boolean().optional(),
23
  dailyReminderTime: z.string().regex(/^\d{2}:\d{2}$/).nullable().optional(),
24
  weeklyResumeEnabled: z.boolean().optional(),
25
});
26

27
export type UpdateUserPreferencesInput = z.infer<typeof UpdateUserPreferencesSchema>;