using System.IO; using API.Interfaces.Services; using Hangfire; using Microsoft.Extensions.Logging; namespace API.Services.Tasks { /// /// Cleans up after operations on reoccurring basis /// public class CleanupService : ICleanupService { private readonly ICacheService _cacheService; private readonly ILogger _logger; private readonly IBackupService _backupService; public CleanupService(ICacheService cacheService, ILogger logger, IBackupService backupService) { _cacheService = cacheService; _logger = logger; _backupService = backupService; } [AutomaticRetry(Attempts = 3, LogEvents = false, OnAttemptsExceeded = AttemptsExceededAction.Fail)] public void Cleanup() { _logger.LogInformation("Cleaning temp directory"); var tempDirectory = Path.Join(Directory.GetCurrentDirectory(), "temp"); DirectoryService.ClearDirectory(tempDirectory); _logger.LogInformation("Cleaning cache directory"); _cacheService.Cleanup(); _logger.LogInformation("Cleaning old database backups"); _backupService.CleanupBackups(); } } }