diff options
| author | Lucas Faria Mendes <lucas.fariamo08@gmail.com> | 2026-08-16 23:17:42 +0000 |
|---|---|---|
| committer | Lucas Faria Mendes <lucas.fariamo08@gmail.com> | 2026-08-16 23:17:42 +0000 |
| commit | 375482e654a01615683867e732ac9e458c7cbe74 (patch) | |
| tree | 12d1b31b8deb6bf8590bcdbc2cfb52dcc553e006 /api/src/modules/users/users.schema.ts | |
| parent | 2c2dfba45357bbd205a59145ae55a2779c911ae0 (diff) | |
| download | yaba-375482e654a01615683867e732ac9e458c7cbe74.tar.gz yaba-375482e654a01615683867e732ac9e458c7cbe74.zip | |
Signed-off-by: Lucas Faria Mendes <lucas.fariamo08@gmail.com>
Diffstat (limited to 'api/src/modules/users/users.schema.ts')
| -rw-r--r-- | api/src/modules/users/users.schema.ts | 23 |
1 files changed, 23 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..62ab514 --- /dev/null +++ b/api/src/modules/users/users.schema.ts @@ -0,0 +1,23 @@ +import { z } from 'zod'; + +export const createUserSchema = z.object({ + name: z.string().min(1, 'Nome é obrigatório').max(100), + gross_salary: z.number().nonnegative('Salário bruto deve ser >= 0'), + net_salary_override: z.number().nonnegative().nullable().optional(), +}); + +export const updateUserSchema = z.object({ + name: z.string().min(1).max(100).optional(), + gross_salary: z.number().nonnegative().optional(), + /** + * Envia `null` para limpar o override e voltar ao valor calculado automaticamente. + */ + net_salary_override: z.number().nonnegative().nullable().optional(), +}); + +export const userParamsSchema = z.object({ + id: z.coerce.number().int().positive(), +}); + +export type CreateUserInput = z.infer<typeof createUserSchema>; +export type UpdateUserInput = z.infer<typeof updateUserSchema>; |