db configuration provider

This commit is contained in:
Mikhail Trubnikov
2023-09-19 14:34:55 +10:00
parent 943c18e707
commit 223c7b0434
15 changed files with 162 additions and 53 deletions

View File

@@ -0,0 +1,42 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using PARR.DAL.Context;
using PARR.DAL.Contracts;
namespace PARR.DAL.Configurations.DbSettings
{
internal class DBConfigurationProvider : ConfigurationProvider
{
private readonly IServiceCollection services;
public DBConfigurationProvider(IServiceCollection services)
{
this.services = services;
}
public override void Load()
{
using (var dataContext = services.BuildServiceProvider().GetService<DataContext>())
{
//если миграциями БД еще не создана, то SettingsInDbs будет недоступна
try
{
var settings = dataContext?.Setting.ToList();
if (settings == null)
return;
if (settings != null)
{
//формируем список с корневым SettingsFromDb, и в него вложены дочерние настройки из БД, чтобы потом забиндить в класс
Data = settings.ToDictionary(settings => $"{nameof(SettingsFromDb)}:{settings.Name}", settings => (string?)settings.Value);
}
}
catch (Exception ex)
{
//TODO: логи, я не тестил, возможно надо через BuildServiceProvider прокинуть ILogger
}
}
}
}
}