Example #1
0
    private async Task DeleteStaleBackupsAsync()
    {
        var instanceName = InstanceName.FromProjectInstance(ProjectId, InstanceId);
        var backups      = DatabaseAdminClient.ListBackups(instanceName, pageSize: 200).ToList();

        if (backups.Count < 50)
        {
            return;
        }

        var deleteCount = Math.Max(30, backups.Count - 50);

        var backupsToDelete = backups
                              .OrderBy(db => long.TryParse(
                                           db.BackupName.BackupId.Replace("my-enc-backup-", ""),
                                           out long creationDate) ? creationDate : long.MaxValue)
                              .Take(deleteCount);

        // Delete the backups.
        foreach (var backup in backupsToDelete)
        {
            try
            {
                await DatabaseAdminClient.DeleteBackupAsync(backup.BackupName);
            }
            catch (Exception) { }
        }
    }