refactor(maintenance): centralize DurationUnit + sync OpenAPI spec

Convention pass per docs/coding-conventions.md (rules 5/8/10/11):
- Promote DurationUnit from a raw union type to a const tuple + derived type.
- Mongoose schema enum imports DurationUnits instead of inlining the values.
- Both validators import DurationUnits instead of inlining z.enum twice.
- Drop stale 'expiry' entries from openapi.json (spec is now strict-mode-correct).
This commit is contained in:
gorkem-bwl committed 2026-05-07 12:38:54 -04:00
1 parent bd059da94a
commit b462ba7562
4 files changed
+7 -15

No files matched your search

@@ -1,5 +1,6 @@
import { z } from "zod";
import { booleanCoercion } from "./shared.js";
import { DurationUnits } from "@/types/maintenanceWindow.js";
const dateToString = z.coerce.date().transform((d) => d.toISOString());
@@ -13,7 +14,7 @@ export const createMaintenanceWindowBodyValidation = z
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"]),
durationUnit: z.enum(DurationUnits),
start: dateToString,
end: dateToString,
repeat: z.number().min(0, "Repeat must be a non-negative number"),
@@ -71,7 +72,7 @@ export const editMaintenanceByIdWindowBodyValidation = z
end: dateToString.optional(),
monitors: z.array(z.string()).optional(),
duration: z.number().optional(),
durationUnit: z.enum(["seconds", "minutes", "hours", "days"]).optional(),
durationUnit: z.enum(DurationUnits).optional(),
})
.strict()
.superRefine((data, ctx) => {