tighten date typing

This commit is contained in:
Alex Holliday committed 2026-03-11 12:00:19 -07:00
1 parent e887c2308a
commit 456237ba4e
3 files changed
+10 -10

No files matched your search

@@ -19,9 +19,9 @@ class MaintenanceWindowController {
createMaintenanceWindows = async (req: Request, res: Response, next: NextFunction) => {
try {
createMaintenanceWindowBodyValidation.parse(req.body);
const validatedBody = createMaintenanceWindowBodyValidation.parse(req.body);
const teamId = requireTeamId(req?.user?.teamId);
await this.maintenanceWindowService.createMaintenanceWindow({ teamId, body: req.body });
await this.maintenanceWindowService.createMaintenanceWindow({ teamId, body: validatedBody });
return res.status(200).json({
success: true,
@@ -1,6 +1,5 @@
import { IMaintenanceWindowsRepository, IMonitorsRepository } from "@/repositories/index.js";
import type { MaintenanceWindow } from "@/types/index.js";
import { ParseBoolean } from "@/utils/utils.js";
import { AppError } from "@/utils/AppError.js";
const SERVICE_NAME = "maintenanceWindowService";
@@ -91,7 +90,6 @@ export class MaintenanceWindowService implements IMaintenanceWindowService {
field?: string;
order?: string;
}) => {
active = typeof active === "undefined" ? undefined : ParseBoolean(active);
page = page ?? 0;
rowsPerPage = rowsPerPage ?? 10;
@@ -1,6 +1,8 @@
import { z } from "zod";
import { booleanCoercion } from "./shared.js";
const dateToString = z.coerce.date().transform((d) => d.toISOString());
//****************************************
// Maintenance Window Validations
//****************************************
@@ -11,10 +13,10 @@ export const createMaintenanceWindowBodyValidation = z.object({
active: z.boolean().optional(),
duration: z.number().min(1, "Duration is required"),
durationUnit: z.enum(["seconds", "minutes", "hours", "days"]),
start: z.coerce.date(),
end: z.coerce.date(),
start: dateToString,
end: dateToString,
repeat: z.number().min(0, "Repeat must be a non-negative number"),
expiry: z.coerce.date().optional(),
expiry: dateToString.optional(),
});
export const getMaintenanceWindowByIdParamValidation = z.object({
@@ -45,9 +47,9 @@ export const editMaintenanceByIdWindowBodyValidation = z.object({
active: z.boolean().optional(),
name: z.string().optional(),
repeat: z.number().optional(),
start: z.string().optional(),
end: z.string().optional(),
expiry: z.string().optional(),
start: dateToString.optional(),
end: dateToString.optional(),
expiry: dateToString.optional(),
monitors: z.array(z.unknown()).optional(),
duration: z.number().optional(),
durationUnit: z.enum(["seconds", "minutes", "hours", "days"]).optional(),