diff --git a/server/src/db/models/StatusPage.ts b/server/src/db/models/StatusPage.ts index 6c1ada40e..e9b5b59aa 100644 --- a/server/src/db/models/StatusPage.ts +++ b/server/src/db/models/StatusPage.ts @@ -45,7 +45,7 @@ const StatusPageSchema = new Schema( type: { type: [String], required: true, - default: [], + default: ["uptime"], enum: StatusPageTypes, }, companyName: { diff --git a/server/src/validation/statusPageValidation.ts b/server/src/validation/statusPageValidation.ts index c4d5005f3..eaa4075a9 100644 --- a/server/src/validation/statusPageValidation.ts +++ b/server/src/validation/statusPageValidation.ts @@ -10,13 +10,17 @@ export const getStatusPageParamValidation = z.object({ }); export const getStatusPageQueryValidation = z.object({ - type: z.array(z.enum(["uptime", "infrastructure"])), + type: z + .union([z.enum(["uptime", "infrastructure"]), z.array(z.enum(["uptime", "infrastructure"]))]) + .transform((val) => (Array.isArray(val) ? val : [val])), timeFrame: z.coerce.number().optional(), }); export const createStatusPageBodyValidation = z .object({ - type: z.array(z.enum(["uptime", "infrastructure"])), + type: z + .union([z.enum(["uptime", "infrastructure"]), z.array(z.enum(["uptime", "infrastructure"]))]) + .transform((val) => (Array.isArray(val) ? val : [val])), companyName: z.string().min(1, "Company name is required"), url: z.string().regex(/^[a-zA-Z0-9_-]+$/, { message: "URL can only contain letters, numbers, underscores, and hyphens", @@ -30,6 +34,7 @@ export const createStatusPageBodyValidation = z showCharts: booleanCoercion.optional(), showUptimePercentage: booleanCoercion, showAdminLoginLink: booleanCoercion.optional(), + showInfrastructure: booleanCoercion.optional(), removeLogo: z.union([z.literal("true"), z.literal("false")]).optional(), }) .strip();