DocSpace-client/common/services/ASC.Feed.Aggregator/Service/FeedCleanerService.cs

49 lines
1.3 KiB
C#
Raw Normal View History

namespace ASC.Feed.Aggregator.Service;
[Singletone]
public class FeedCleanerService : FeedBaseService
{
protected override string LoggerName { get; set; } = "ASC.Feed.Cleaner";
public FeedCleanerService(
FeedSettings feedSettings,
IServiceScopeFactory serviceScopeFactory,
IOptionsMonitor<ILog> optionsMonitor)
: base(feedSettings, serviceScopeFactory, optionsMonitor)
{
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
Logger.Info("Feed Cleaner Service running.");
var cfg = FeedSettings;
while (!stoppingToken.IsCancellationRequested)
{
await Task.Delay(cfg.RemovePeriod, stoppingToken);
RemoveFeeds(cfg.AggregateInterval);
}
Logger.Info("Feed Cleaner Service stopping.");
}
private void RemoveFeeds(object interval)
{
try
{
using var scope = ServiceScopeFactory.CreateScope();
var feedAggregateDataProvider = scope.ServiceProvider.GetService<FeedAggregateDataProvider>();
Logger.DebugFormat("Start of removing old news");
feedAggregateDataProvider.RemoveFeedAggregate(DateTime.UtcNow.Subtract((TimeSpan)interval));
}
catch (Exception ex)
{
Logger.Error(ex);
}
}
}