fixed singletons using datacontext

This commit is contained in:
Flaminel
2025-06-16 22:23:40 +03:00
parent 0a8d1450dd
commit cacd62058f
3 changed files with 22 additions and 13 deletions

View File

@@ -2,6 +2,7 @@ using Common.Enums;
using Data;
using Infrastructure.Verticals.DownloadClient;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace Infrastructure.Health;
@@ -12,7 +13,7 @@ namespace Infrastructure.Health;
public class HealthCheckService : IHealthCheckService
{
private readonly ILogger<HealthCheckService> _logger;
private readonly DataContext _dataContext;
private readonly IServiceProvider _serviceProvider;
private readonly DownloadServiceFactory _downloadServiceFactory;
private readonly Dictionary<Guid, HealthStatus> _healthStatuses = new();
private readonly object _lockObject = new();
@@ -24,11 +25,11 @@ public class HealthCheckService : IHealthCheckService
public HealthCheckService(
ILogger<HealthCheckService> logger,
DataContext dataContext,
IServiceProvider serviceProvider,
DownloadServiceFactory downloadServiceFactory)
{
_logger = logger;
_dataContext = dataContext;
_serviceProvider = serviceProvider;
_downloadServiceFactory = downloadServiceFactory;
}
@@ -39,8 +40,10 @@ public class HealthCheckService : IHealthCheckService
try
{
var dataContext = _serviceProvider.GetRequiredService<DataContext>();
// Get the client configuration
var downloadClientConfig = await _dataContext.DownloadClients
var downloadClientConfig = await dataContext.DownloadClients
.Where(x => x.Id == clientId)
.FirstOrDefaultAsync();
@@ -104,8 +107,10 @@ public class HealthCheckService : IHealthCheckService
try
{
var dataContext = _serviceProvider.GetRequiredService<DataContext>();
// Get all enabled client configurations
var enabledClients = await _dataContext.DownloadClients
var enabledClients = await dataContext.DownloadClients
.Where(x => x.Enabled)
.Where(x => x.TypeName != DownloadClientTypeName.Usenet)
.ToListAsync();

View File

@@ -4,6 +4,7 @@ using Data;
using Infrastructure.Http.DynamicHttpClientSystem;
using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
namespace Infrastructure.Http;
@@ -13,16 +14,16 @@ namespace Infrastructure.Http;
public class DynamicHttpClientProvider : IDynamicHttpClientProvider
{
private readonly ILogger<DynamicHttpClientProvider> _logger;
private readonly DataContext _dataContext;
private readonly IServiceProvider _serviceProvider;
private readonly IDynamicHttpClientFactory _dynamicHttpClientFactory;
public DynamicHttpClientProvider(
ILogger<DynamicHttpClientProvider> logger,
DataContext dataContext,
IServiceProvider serviceProvider,
IDynamicHttpClientFactory dynamicHttpClientFactory)
{
_logger = logger;
_dataContext = dataContext;
_serviceProvider = serviceProvider;
_dynamicHttpClientFactory = dynamicHttpClientFactory;
}
@@ -49,7 +50,8 @@ public class DynamicHttpClientProvider : IDynamicHttpClientProvider
/// <returns>A configured HttpClient instance</returns>
private HttpClient CreateGenericClient(DownloadClientConfig downloadClientConfig)
{
var httpConfig = _dataContext.GeneralConfigs.First();
var dataContext = _serviceProvider.GetRequiredService<DataContext>();
var httpConfig = dataContext.GeneralConfigs.First();
var clientName = GetClientName(downloadClientConfig);
// Determine the client type based on the download client type

View File

@@ -10,6 +10,7 @@ using Data.Enums;
using Infrastructure.Helpers;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace Infrastructure.Verticals.ContentBlocker;
@@ -17,7 +18,7 @@ namespace Infrastructure.Verticals.ContentBlocker;
public sealed class BlocklistProvider
{
private readonly ILogger<BlocklistProvider> _logger;
private readonly DataContext _dataContext;
private readonly IServiceProvider _serviceProvider;
private readonly HttpClient _httpClient;
private readonly IMemoryCache _cache;
private readonly Dictionary<InstanceType, string> _configHashes = new();
@@ -26,13 +27,13 @@ public sealed class BlocklistProvider
public BlocklistProvider(
ILogger<BlocklistProvider> logger,
DataContext dataContext,
IServiceProvider serviceProvider,
IMemoryCache cache,
IHttpClientFactory httpClientFactory
)
{
_logger = logger;
_dataContext = dataContext;
_serviceProvider = serviceProvider;
_cache = cache;
_httpClient = httpClientFactory.CreateClient(Constants.HttpClientWithRetryName);
}
@@ -41,8 +42,9 @@ public sealed class BlocklistProvider
{
try
{
var dataContext = _serviceProvider.GetRequiredService<DataContext>();
int changedCount = 0;
var queueCleanerConfig = await _dataContext.QueueCleanerConfigs
var queueCleanerConfig = await dataContext.QueueCleanerConfigs
.AsNoTracking()
.FirstAsync();
bool shouldReload = false;