private async Task AllClean(ProbeDbContext dbContext, IStorageProvider storageProvider) { var files = await dbContext.Files.ToListAsync(); foreach (var file in files) { if (!storageProvider.ExistInHardware(file.HardwareId)) { _logger.LogWarning($"Cleaner message: File with Id: {file.HardwareId} was found in database but not found on disk! Deleting record in database..."); // delete file in db. dbContext.Files.Remove(file); } } await dbContext.SaveChangesAsync(); var storageFiles = storageProvider.GetAllFileNamesInHardware(); foreach (var file in storageFiles) { if (files.All(t => t.HardwareId != file)) { _logger.LogWarning($"Cleaner message: File with hardware Id: {file} was found on disk but not found in database! Consider Delete that file on disk!"); // delete file in disk storageProvider.DeleteToTrash(file); } } }
public async Task DeleteFile(File file) { _dbContext.Files.Remove(file); var haveDaemon = await _dbContext.Files.Where(f => f.Id != file.Id).AnyAsync(f => f.HardwareId == file.HardwareId); if (!haveDaemon) { _storageProvider.DeleteToTrash(file.HardwareId); } }
public async Task DeleteOnDisk(File file) { try { var haveDaemon = await _probeDbContext.Files.Where(f => f.Id != file.Id).AnyAsync(f => f.HardwareId == file.HardwareId); if (!haveDaemon) { await _retryEngine.RunWithTry(taskFactory : _ => { _storageProvider.DeleteToTrash(file.HardwareId); return(Task.FromResult(0)); }, attempts : 10); } } catch (Exception e) { var token = await _appsContainer.AccessToken(); await _eventService.LogExceptionAsync(token, e, "Deleter"); } }