Files
Moonlight/Moonlight/App/Services/Statistics/StatisticsCaptureService.cs
Marcel Baumgartner 355884e999 Removed legacy website
2023-04-20 07:57:20 +02:00

47 lines
1.9 KiB
C#

using Moonlight.App.Database;
using Moonlight.App.Repositories;
namespace Moonlight.App.Services.Statistics;
public class StatisticsCaptureService
{
private readonly DataContext DataContext;
private readonly ConfigService ConfigService;
private readonly StatisticsRepository StatisticsRepository;
private readonly IServiceScopeFactory ServiceScopeFactory;
private readonly WebSpaceService WebSpaceService;
private readonly PeriodicTimer Timer;
public StatisticsCaptureService(IServiceScopeFactory serviceScopeFactory, ConfigService configService)
{
ServiceScopeFactory = serviceScopeFactory;
var provider = ServiceScopeFactory.CreateScope().ServiceProvider;
DataContext = provider.GetRequiredService<DataContext>();
ConfigService = configService;
StatisticsRepository = provider.GetRequiredService<StatisticsRepository>();
WebSpaceService = provider.GetRequiredService<WebSpaceService>();
var config = ConfigService.GetSection("Moonlight").GetSection("Statistics");
if(!config.GetValue<bool>("Enabled"))
return;
var _period = config.GetValue<int>("Wait");
var period = TimeSpan.FromMinutes(_period);
Timer = new(period);
Task.Run(Run);
}
private async Task Run()
{
while (await Timer.WaitForNextTickAsync())
{
StatisticsRepository.Add("statistics.usersCount", DataContext.Users.Count());
StatisticsRepository.Add("statistics.serversCount", DataContext.Servers.Count());
StatisticsRepository.Add("statistics.domainsCount", DataContext.Domains.Count());
StatisticsRepository.Add("statistics.webspacesCount", DataContext.WebSpaces.Count());
StatisticsRepository.Add("statistics.databasesCount", DataContext.Databases.Count());
}
}
}