import { z } from "zod"

export const backupFrequencySchema = z.enum(["daily", "weekly", "monthly"])
export const backupFormatSchema = z.enum(["rsc", "backup"])

export const backupScheduleSettingsDtoSchema = z.object({
  enabled: z.boolean(),
  frequency: backupFrequencySchema,
  hour: z.number().int().min(0).max(23),
  minute: z.number().int().min(0).max(59),
  weekDay: z.number().int().min(0).max(6),
  monthDay: z.number().int().min(1).max(28),
  keepCount: z.number().int().min(1).max(365),
  format: backupFormatSchema,
  serverIds: z.array(z.string()),
  lastRunAt: z.string().nullable().optional(),
  lastDurationMs: z.number().int().nullable().optional(),
  lastError: z.string().nullable().optional(),
  updatedAt: z.string().optional(),
})

export const putBackupScheduleSettingsSchema = z.object({
  enabled: z.boolean().optional(),
  frequency: backupFrequencySchema.optional(),
  hour: z.number().int().min(0).max(23).optional(),
  minute: z.number().int().min(0).max(59).optional(),
  weekDay: z.number().int().min(0).max(6).optional(),
  monthDay: z.number().int().min(1).max(28).optional(),
  keepCount: z.number().int().min(1).max(365).optional(),
  format: backupFormatSchema.optional(),
  serverIds: z.array(z.string()).optional(),
})

export type BackupScheduleSettingsDto = z.infer<typeof backupScheduleSettingsDtoSchema>
