import type { AutomaticBackupsScheduleState, BackupCadence, } from '../types/types'; import { BACKUP_CADENCES } from './backupSchedule'; const isObject = (value: unknown): value is Record => typeof value === 'object' && value !== null; const asOptionalString = (value: unknown): string | undefined => typeof value === 'string' && value.trim() ? value.trim() : undefined; const toCadenceMap = ( value: unknown, ): Partial> | undefined => { if (!isObject(value)) { return undefined; } const next: Partial> = {}; for (const [key, entry] of Object.entries(value)) { if (!BACKUP_CADENCES.includes(key as BackupCadence)) { continue; } const normalized = asOptionalString(entry); if (normalized) { next[key as BackupCadence] = normalized; } } return Object.keys(next).length > 0 ? next : undefined; }; export const toAutomaticBackupsScheduleState = ( value: unknown, ): AutomaticBackupsScheduleState => { if (!isObject(value)) { return {}; } return { ...value, lastRunLocalDateByCadence: toCadenceMap(value.lastRunLocalDateByCadence), lastRunAtByCadence: toCadenceMap(value.lastRunAtByCadence), lastManagedEnvironmentIdByCadence: toCadenceMap( value.lastManagedEnvironmentIdByCadence, ), lastExecutionModeByCadence: toCadenceMap( value.lastExecutionModeByCadence, ) as AutomaticBackupsScheduleState['lastExecutionModeByCadence'], lastErrorByCadence: toCadenceMap(value.lastErrorByCadence), dailyLastRunDate: asOptionalString(value.dailyLastRunDate), weeklyLastRunKey: asOptionalString(value.weeklyLastRunKey), lastDailyRunAt: asOptionalString(value.lastDailyRunAt), lastWeeklyRunAt: asOptionalString(value.lastWeeklyRunAt), lastDailyManagedEnvironmentId: asOptionalString( value.lastDailyManagedEnvironmentId, ), lastWeeklyManagedEnvironmentId: asOptionalString( value.lastWeeklyManagedEnvironmentId, ), lastDailyError: asOptionalString(value.lastDailyError), lastWeeklyError: asOptionalString(value.lastWeeklyError), }; };