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();
}
}
}