monitoring-app/src/packages/administrativo/schemas/Log/LogShcema.ts

43 lines
1.3 KiB
TypeScript

import { z } from "zod";
/**
* Schema de validação para a tabela `log`
* Baseado na DDL do banco de dados `monitoring.log`
*/
export const LogSchema = z.object({
// ID do log, gerado automaticamente pelo banco (AUTO_INCREMENT)
log_id: z.number().optional(),
// ID do cliente relacionado — campo obrigatório
client_id: z
.number({
message: "O campo client_id deve ser um número.",
})
.int()
.positive({ message: "O client_id deve ser um número positivo." }),
// Data e hora da inserção — gerada automaticamente pelo banco (CURRENT_TIMESTAMP)
date_post: z
.string()
.datetime({ message: "O campo date_post deve ser uma data/hora válida (ISO 8601)." })
.optional()
.nullable(),
// Campo JSON que armazena informações sobre o arquivo
// Pode ser um objeto com qualquer estrutura válida em JSON
file: z
.any()
.refine((val) => val !== undefined, {
message: "O campo file é obrigatório e deve conter um JSON válido.",
})
.refine(
(val) => typeof val === "object" && val !== null,
{ message: "O campo file deve ser um objeto JSON válido." }
),
});
/**
* Tipo TypeScript inferido automaticamente a partir do schema.
* Permite utilizar a tipagem do Zod em qualquer parte do código.
*/
export type LogSchemaType = z.infer<typeof LogSchema>;