added integration tools

This commit is contained in:
Вячеслав 2025-03-15 00:10:12 +05:00
parent 7c30a3599f
commit bac3ed072e
3 changed files with 42 additions and 0 deletions

View file

@ -0,0 +1,7 @@
namespace SurveyLib.Infrastructure.EFCore.Integration;
public enum DBType
{
Sqlite,
PostgreSql
}

View file

@ -0,0 +1,33 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using SurveyLib.Core.Repositories;
using SurveyLib.Infrastructure.EFCore.Data;
using SurveyLib.Infrastructure.EFCore.Repositories;
namespace SurveyLib.Infrastructure.EFCore.Integration;
public static class InfrastructureExtensions
{
public static IServiceCollection AddSurveyInfrastructure(this IServiceCollection services, string connectionString,
DBType dbType)
{
switch (dbType)
{
case DBType.Sqlite:
services.AddDbContext<DataContext>(options => options.UseSqlite(connectionString));
break;
case DBType.PostgreSql:
services.AddDbContext<DataContext>(options => options.UseNpgsql(connectionString));
break;
default:
throw new ArgumentOutOfRangeException(nameof(dbType), dbType, null);
}
services.AddScoped<ISurveyRepository, SurveyRepository>();
services.AddScoped<IQuestionRepository, QuestionRepository>();
services.AddScoped<ICompletionRepository, CompletionRepository>();
services.AddScoped<IAnswerRepository, AnswerRepository>();
return services;
}
}

View file

@ -8,6 +8,8 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.3" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.3" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.4" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>