Files
parr_api/PARR.DAL/ParrDalInstaller.cs

88 lines
4.1 KiB
C#

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using PARR.DAL.Configurations.DbSettings;
using PARR.DAL.Context;
using PARR.DAL.Contracts;
using PARR.DAL.Services.Implementation;
using PARR.DAL.Services.Implementations;
using PARR.DAL.Services.Implementations.AIHIT;
using PARR.DAL.Services.Implementations.V1;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.AIHIT;
using PARR.DAL.Services.Interfaces.V1;
namespace PARR.DAL
{
public static class ParrDalInstaller
{
/// <summary>
/// Устанавливает Dal сервисы (1)
/// </summary>
/// <param name="services"></param>
/// <param name="configuration"></param>
public static void InstallDalServices(this IServiceCollection services, IConfiguration configuration)
{
services.AddDbContext<DataContext>(opt =>
opt.UseNpgsql(configuration.GetConnectionString("DefaultConnection"))
);
services.AddTransient<V1_IHostService, V1_HostService>();
services.AddTransient<IHostService, HostService>();
services.AddTransient<IApplicationService, ApplicationService>();
services.AddTransient<IApplicationTypeService, ApplicationTypeService>();
services.AddTransient<IApplicationInHostService, ApplicationInHostService>();
services.AddTransient<IApplicationsInWorkService, ApplicationsInWorkService>();
services.AddTransient<IWorkService, WorkService>();
services.AddTransient<IApplicationService, ApplicationService>();
services.AddTransient<IProcessService, ProcessService>();
services.AddTransient<ISubprocessService, SubprocessService>();
services.AddTransient<ITnkService, TnkService>();
services.AddTransient<V1_IApplicationService, V1_ApplicationService>();
services.AddTransient<V1_IApplicationTypeService, V1_ApplicationTypeService>();
services.AddTransient<V1_IApplicationInHostService, V1_ApplicationInHostService>();
services.AddTransient<V1_IJobService, V1_JobService>();
services.AddTransient<V1_IJobJournalService, V1_JobJournalService>();
services.AddTransient<IRawDataEKService, RawDataEKService>();
services.AddTransient<ISettingService, SettingService>();
services.AddTransient<ITemplateService, TemplateService>();
services.AddTransient<IStatusTemplateService, StatusTemplateService>();
services.AddTransient<IRobotHistoryLevelService, RobotHistoryLevelService>();
services.AddTransient<IRobotStatusService, RobotStatusService>();
services.AddTransient<IRobotTemplateHistoryService, RobotTemplateHistoryService>();
services.AddTransient<IRobotService, RobotService>();
services.AddTransient<IRobotConfigurationService, RobotConfigurationService>();
services.AddTransient<IRobotHistoryService, RobotHistoryService>();
}
/// <summary>
/// Добавляет конфигурацию Dal (2)
/// </summary>
/// <param name="builder"></param>
/// <param name="services"></param>
/// <returns></returns>
public static IConfigurationBuilder AddDalConfigurations(this IConfigurationBuilder builder, IServiceCollection services)
{
builder.Add(new DBConfigurationSource(services));
return builder;
}
/// <summary>
/// Добавляет конфигурацию в сервисы (3)
/// </summary>
/// <param name="services"></param>
/// <param name="configuration"></param>
public static void AddDallSettings(this IServiceCollection services, IConfiguration configuration)
{
//SettingsFromDb configuration
var settingsFromDb = new SettingsFromDb();
configuration.GetSection(nameof(SettingsFromDb)).Bind(settingsFromDb);
services.AddSingleton(settingsFromDb);
}
}
}