setSchedule static method
Future<void>
setSchedule(
- Client cloudApiClient, {
- required CommandLogger logger,
- required String projectId,
- required BackupFrequency frequency,
- int? day,
- int? hour,
- Duration? retention,
Sets (creates or updates) the automated backup schedule for the project's database.
hour defaults to 0 (midnight UTC). For weekly and monthly schedules
day defaults to 1 when omitted; it is not applicable to daily schedules
and is ignored in that case.
Implementation
static Future<void> setSchedule(
final Client cloudApiClient, {
required final CommandLogger logger,
required final String projectId,
required final BackupFrequency frequency,
final int? day,
final int? hour,
final Duration? retention,
}) async {
final effectiveHour = hour ?? 0;
final effectiveDay = switch (frequency) {
BackupFrequency.daily => null,
BackupFrequency.weekly || BackupFrequency.monthly => day ?? 1,
};
if (frequency == BackupFrequency.daily && day != null) {
logger.warning(
'A day is not applicable to a daily schedule and is ignored.',
);
}
try {
await cloudApiClient.database.setBackupSchedule(
cloudCapsuleId: projectId,
frequency: frequency,
day: effectiveDay,
hour: effectiveHour,
retention: retention,
);
} on Exception catch (e, s) {
throw FailureException.nested(e, s, 'Failed to set backup schedule');
}
logger.success(
'Backup schedule set for project "$projectId".',
newParagraph: true,
);
_scheduleTable(
BackupSchedule(
frequency: frequency,
day: effectiveDay,
hour: effectiveHour,
retention: retention,
),
).writeLines(logger.line);
}