Initial
This commit is contained in:
@@ -367,6 +367,24 @@ const runPlanPayloadSchema = z.object({
|
||||
hostGroupIds: z.array(z.string()).optional()
|
||||
});
|
||||
|
||||
const runPlanSchedulePayloadSchema = z.object({
|
||||
name: z.string().min(1).max(180),
|
||||
description: z.string().max(800).optional().default(''),
|
||||
runplanId: z.string().min(1),
|
||||
enabled: z.boolean().or(z.number()).optional().default(true),
|
||||
scheduleType: z.enum(['once', 'interval', 'daily', 'weekly', 'monthly', 'yearly']).default('once'),
|
||||
startAt: z.string().min(1),
|
||||
endAt: z.string().optional().default(''),
|
||||
timeOfDay: z.string().regex(/^\d{2}:\d{2}$/).optional().or(z.literal('')).default(''),
|
||||
intervalValue: z.coerce.number().int().min(1).max(100000).optional().default(1),
|
||||
intervalUnit: z.enum(['minutes', 'hours', 'days', 'months', 'years']).optional().default('hours'),
|
||||
daysOfWeek: z.array(z.coerce.number().int().min(0).max(6)).optional().default([]),
|
||||
dayOfMonth: z.coerce.number().int().min(1).max(31).nullable().optional(),
|
||||
monthOfYear: z.coerce.number().int().min(1).max(12).nullable().optional(),
|
||||
visibility: visibilitySchema.default('personal'),
|
||||
groupId: z.string().nullable().optional()
|
||||
});
|
||||
|
||||
export const scriptCompatibilitySchema = z.object({
|
||||
hostId: z.string().optional().default(''),
|
||||
hostGroupId: z.string().optional().default(''),
|
||||
@@ -399,3 +417,24 @@ export function normalizeRunPlanPayload(body) {
|
||||
hostGroupIds: parsed.hostGroupIds || []
|
||||
};
|
||||
}
|
||||
|
||||
export function normalizeRunPlanSchedulePayload(body) {
|
||||
const parsed = runPlanSchedulePayloadSchema.parse(body);
|
||||
return {
|
||||
name: parsed.name,
|
||||
description: parsed.description || '',
|
||||
runplanId: parsed.runplanId,
|
||||
enabled: Boolean(parsed.enabled),
|
||||
scheduleType: parsed.scheduleType,
|
||||
startAt: parsed.startAt,
|
||||
endAt: parsed.endAt || '',
|
||||
timeOfDay: parsed.timeOfDay || '',
|
||||
intervalValue: parsed.intervalValue || 1,
|
||||
intervalUnit: parsed.intervalUnit || 'hours',
|
||||
daysOfWeek: [...new Set(parsed.daysOfWeek || [])].sort((a, b) => a - b),
|
||||
dayOfMonth: parsed.dayOfMonth || null,
|
||||
monthOfYear: parsed.monthOfYear || null,
|
||||
visibility: parsed.visibility,
|
||||
groupId: parsed.visibility === 'group' ? parsed.groupId ?? null : null
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user