Files
Checkmate/server/src/validation/maintenanceWindowValidation.ts
T

56 lines
1.9 KiB
TypeScript
Raw Normal View History

2026-03-02 17:46:33 +00:00
import { z } from "zod";
2026-03-02 19:25:34 +00:00
import { booleanCoercion } from "./shared.js";
2026-03-01 17:35:00 +00:00
2026-03-11 12:00:19 -07:00
const dateToString = z.coerce.date().transform((d) => d.toISOString());
2026-03-01 17:35:00 +00:00
//****************************************
// Maintenance Window Validations
//****************************************
2026-03-02 17:46:33 +00:00
export const createMaintenanceWindowBodyValidation = z.object({
monitors: z.array(z.string()).min(1, "At least one monitor is required"),
name: z.string().min(1, "Name is required"),
active: z.boolean().optional(),
duration: z.number().min(1, "Duration is required"),
durationUnit: z.enum(["seconds", "minutes", "hours", "days"]),
2026-03-11 12:00:19 -07:00
start: dateToString,
end: dateToString,
2026-03-02 17:46:33 +00:00
repeat: z.number().min(0, "Repeat must be a non-negative number"),
2026-03-11 12:00:19 -07:00
expiry: dateToString.optional(),
2026-03-01 17:35:00 +00:00
});
2026-03-02 17:46:33 +00:00
export const getMaintenanceWindowByIdParamValidation = z.object({
id: z.string().min(1, "ID is required"),
2026-03-01 17:35:00 +00:00
});
2026-03-02 17:46:33 +00:00
export const getMaintenanceWindowsByTeamIdQueryValidation = z.object({
2026-03-02 19:25:34 +00:00
active: booleanCoercion.optional(),
2026-03-02 17:46:33 +00:00
page: z.coerce.number().optional(),
rowsPerPage: z.coerce.number().optional(),
field: z.string().optional(),
order: z.enum(["asc", "desc"]).optional(),
2026-03-01 17:35:00 +00:00
});
2026-03-02 17:46:33 +00:00
export const getMaintenanceWindowsByMonitorIdParamValidation = z.object({
monitorId: z.string().min(1, "Monitor ID is required"),
2026-03-01 17:35:00 +00:00
});
2026-03-02 17:46:33 +00:00
export const deleteMaintenanceWindowByIdParamValidation = z.object({
id: z.string().min(1, "ID is required"),
2026-03-01 17:35:00 +00:00
});
2026-03-02 17:46:33 +00:00
export const editMaintenanceWindowByIdParamValidation = z.object({
id: z.string().min(1, "ID is required"),
2026-03-01 17:35:00 +00:00
});
2026-03-02 17:46:33 +00:00
export const editMaintenanceByIdWindowBodyValidation = z.object({
active: z.boolean().optional(),
name: z.string().optional(),
repeat: z.number().optional(),
2026-03-11 12:00:19 -07:00
start: dateToString.optional(),
end: dateToString.optional(),
expiry: dateToString.optional(),
2026-03-11 12:04:28 -07:00
monitors: z.array(z.string()).optional(),
2026-03-02 17:46:33 +00:00
duration: z.number().optional(),
durationUnit: z.enum(["seconds", "minutes", "hours", "days"]).optional(),
2026-03-01 17:35:00 +00:00
});