aboutsummaryrefslogtreecommitdiff
path: root/api/src/modules/users/users.schema.ts
diff options
context:
space:
mode:
authorzwlucas <lucas.fariamo08@gmail.com>2026-07-25 21:23:29 +0000
committerzwlucas <lucas.fariamo08@gmail.com>2026-07-25 21:23:29 +0000
commitef55d9bb24430610b60c1b77821307cd72c08c55 (patch)
treee6935a810b34370b0a4c821e55f6397aac50c832 /api/src/modules/users/users.schema.ts
downloadhelpdesk-ef55d9bb24430610b60c1b77821307cd72c08c55.tar.gz
helpdesk-ef55d9bb24430610b60c1b77821307cd72c08c55.zip
feat: upload of the projectHEADmaster
Signed-off-by: zwlucas <lucas.fariamo08@gmail.com>
Diffstat (limited to 'api/src/modules/users/users.schema.ts')
-rw-r--r--api/src/modules/users/users.schema.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/api/src/modules/users/users.schema.ts b/api/src/modules/users/users.schema.ts
new file mode 100644
index 0000000..ff3f459
--- /dev/null
+++ b/api/src/modules/users/users.schema.ts
@@ -0,0 +1,25 @@
+import { z } from 'zod';
+import { USER_ROLES } from '@/db/schema.js';
+
+export const createUserByAdminBodySchema = z.object({
+ name: z.string().min(2).max(100).trim(),
+ email: z.string().email().toLowerCase().trim(),
+ password: z.string().min(8).max(100),
+ role: z.enum(USER_ROLES),
+});
+
+export type CreateUserByAdminBody = z.infer<typeof createUserByAdminBodySchema>;
+
+export const updateUserBodySchema = z.object({
+ name: z.string().min(2).max(100).trim().optional(),
+ email: z.string().email().toLowerCase().trim().optional(),
+ password: z.string().min(8).max(100).optional().or(z.literal('')),
+ role: z.enum(USER_ROLES).optional(),
+ isActive: z.boolean().optional(),
+});
+
+export type UpdateUserBody = z.infer<typeof updateUserBodySchema>;
+
+export const userIdParamsSchema = z.object({
+ id: z.coerce.number().positive(),
+});