2026-03-02 18:03:10 +00:00
|
|
|
import { z } from "zod";
|
2026-03-01 17:35:00 +00:00
|
|
|
|
|
|
|
|
//****************************************
|
|
|
|
|
// Settings Validations
|
|
|
|
|
//****************************************
|
|
|
|
|
|
2026-03-02 18:03:10 +00:00
|
|
|
export const updateAppSettingsBodyValidation = z
|
|
|
|
|
.object({
|
|
|
|
|
// Number or empty string fields
|
|
|
|
|
checkTTL: z.union([z.number(), z.literal("")]).optional(),
|
|
|
|
|
systemEmailPort: z.union([z.number(), z.literal("")]).optional(),
|
2026-03-01 17:35:00 +00:00
|
|
|
|
2026-03-02 18:03:10 +00:00
|
|
|
// String or empty string fields
|
|
|
|
|
pagespeedApiKey: z.union([z.string(), z.literal("")]).optional(),
|
|
|
|
|
language: z.union([z.string(), z.literal("")]).optional(),
|
|
|
|
|
timezone: z.union([z.string(), z.literal("")]).optional(),
|
|
|
|
|
systemEmailHost: z.union([z.string(), z.literal("")]).optional(),
|
|
|
|
|
systemEmailAddress: z.union([z.string(), z.literal("")]).optional(),
|
|
|
|
|
systemEmailPassword: z.union([z.string(), z.literal("")]).optional(),
|
|
|
|
|
systemEmailUser: z.union([z.string(), z.literal("")]).optional(),
|
|
|
|
|
systemEmailConnectionHost: z.union([z.string(), z.literal("")]).optional(),
|
|
|
|
|
systemEmailTLSServername: z.union([z.string(), z.literal("")]).optional(),
|
|
|
|
|
|
|
|
|
|
// Boolean fields (optional by default in Joi)
|
|
|
|
|
showURL: z.boolean().optional(),
|
|
|
|
|
systemEmailSecure: z.boolean().optional(),
|
|
|
|
|
systemEmailPool: z.boolean().optional(),
|
|
|
|
|
systemEmailIgnoreTLS: z.boolean().optional(),
|
|
|
|
|
systemEmailRequireTLS: z.boolean().optional(),
|
|
|
|
|
systemEmailRejectUnauthorized: z.boolean().optional(),
|
|
|
|
|
|
|
|
|
|
// Nested object
|
|
|
|
|
globalThresholds: z
|
|
|
|
|
.object({
|
|
|
|
|
cpu: z.union([z.number().min(1).max(100), z.literal("")]).optional(),
|
|
|
|
|
memory: z.union([z.number().min(1).max(100), z.literal("")]).optional(),
|
|
|
|
|
disk: z.union([z.number().min(1).max(100), z.literal("")]).optional(),
|
|
|
|
|
temperature: z.union([z.number().min(1).max(150), z.literal("")]).optional(),
|
|
|
|
|
})
|
|
|
|
|
.optional(),
|
|
|
|
|
})
|
|
|
|
|
.strip(); // Joi by default strips unknown keys, match that behavior with .strip()
|