Beispiel #1
0
        public async Task Cleanup(int numItemsToKeep = 5)
        {
            var storageIdentifiers = await _storageService.GetSolutionListStorageIdentifiers();

            if (storageIdentifiers.Any() == true)
            {
                var entriesToDelete = storageIdentifiers
                                      .GroupBy(s => s.Name)
                                      .Where(g => g.Count() > numItemsToKeep)
                                      .SelectMany(g => g
                                                  .OrderByDescending(s => s.Date)
                                                  .Skip(numItemsToKeep))
                                      .Select(s => s.BlobName);

                if (entriesToDelete?.Any() == true)
                {
                    var tasks = new List <Task <bool> >();
                    var msg   = $"These blobs will be removed:{Environment.NewLine}";

                    foreach (var blobName in entriesToDelete)
                    {
                        msg += $"{blobName}{Environment.NewLine}";
                        tasks.Add(_storageService.Delete(blobName));
                    }

                    _logger.Information(msg);
                    await Task.WhenAll(tasks);
                }
                else
                {
                    _logger.Information("There are no old entries to remove.");
                }
            }
            else
            {
                _logger.Information("There are no entries to remove.");
            }
        }