Add Application configuration #11
@ -1,24 +1,41 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Mirea.Api.DataAccess.Application.Interfaces.DbContexts.Schedule;
|
using Mirea.Api.DataAccess.Application.Interfaces.DbContexts.Schedule;
|
||||||
|
using Mirea.Api.DataAccess.Domain.Schedule;
|
||||||
|
using Mirea.Api.DataAccess.Persistence.Common;
|
||||||
using Mirea.Api.DataAccess.Persistence.Contexts.Schedule;
|
using Mirea.Api.DataAccess.Persistence.Contexts.Schedule;
|
||||||
|
using Mirea.Api.DataAccess.Persistence.EntityTypeConfigurations;
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
namespace Mirea.Api.DataAccess.Persistence;
|
namespace Mirea.Api.DataAccess.Persistence;
|
||||||
|
|
||||||
public static class DependencyInjection
|
public static class DependencyInjection
|
||||||
{
|
{
|
||||||
public static IServiceCollection AddPersistence(this IServiceCollection services, string connection)
|
public static IServiceCollection AddPersistence(this IServiceCollection services, DatabaseProvider dbProvider, string connection)
|
||||||
{
|
{
|
||||||
services.AddDbContext<CampusDbContext>(DbConfig);
|
services.AddDbContext<CampusDbContext>(options =>
|
||||||
services.AddDbContext<DisciplineDbContext>(DbConfig);
|
UseDatabase(options).CreateDbContext<CampusDbContext, Campus>(dbProvider));
|
||||||
services.AddDbContext<FacultyDbContext>(DbConfig);
|
services.AddDbContext<DisciplineDbContext>(options =>
|
||||||
services.AddDbContext<GroupDbContext>(DbConfig);
|
UseDatabase(options).CreateDbContext<DisciplineDbContext, Discipline>(dbProvider));
|
||||||
services.AddDbContext<LectureHallDbContext>(DbConfig);
|
services.AddDbContext<FacultyDbContext>(options =>
|
||||||
services.AddDbContext<LessonAssociationDbContext>(DbConfig);
|
UseDatabase(options).CreateDbContext<FacultyDbContext, Faculty>(dbProvider));
|
||||||
services.AddDbContext<ProfessorDbContext>(DbConfig);
|
services.AddDbContext<GroupDbContext>(options =>
|
||||||
services.AddDbContext<LessonDbContext>(DbConfig);
|
UseDatabase(options).CreateDbContext<GroupDbContext, Group>(dbProvider));
|
||||||
services.AddDbContext<TypeOfOccupationDbContext>(DbConfig);
|
services.AddDbContext<LectureHallDbContext>(options =>
|
||||||
services.AddDbContext<SpecificWeekDbContext>(DbConfig);
|
UseDatabase(options).CreateDbContext<LectureHallDbContext, LectureHall>(dbProvider));
|
||||||
|
services.AddDbContext<LessonAssociationDbContext>(options =>
|
||||||
|
UseDatabase(options).CreateDbContext<LessonAssociationDbContext, LessonAssociation>(dbProvider));
|
||||||
|
services.AddDbContext<ProfessorDbContext>(options =>
|
||||||
|
UseDatabase(options).CreateDbContext<ProfessorDbContext, Professor>(dbProvider));
|
||||||
|
services.AddDbContext<LessonDbContext>(options =>
|
||||||
|
UseDatabase(options).CreateDbContext<LessonDbContext, Lesson>(dbProvider));
|
||||||
|
services.AddDbContext<TypeOfOccupationDbContext>(options =>
|
||||||
|
UseDatabase(options).CreateDbContext<TypeOfOccupationDbContext, TypeOfOccupation>(dbProvider));
|
||||||
|
services.AddDbContext<SpecificWeekDbContext>(options =>
|
||||||
|
UseDatabase(options).CreateDbContext<SpecificWeekDbContext, SpecificWeek>(dbProvider));
|
||||||
|
|
||||||
|
|
||||||
services.AddDbContext<UberDbContext>(DbConfig);
|
services.AddDbContext<UberDbContext>(DbConfig);
|
||||||
|
|
||||||
@ -35,6 +52,15 @@ public static class DependencyInjection
|
|||||||
|
|
||||||
return services;
|
return services;
|
||||||
|
|
||||||
void DbConfig(DbContextOptionsBuilder options) => options.UseSqlite(connection);
|
DbContextOptionsBuilder UseDatabase(DbContextOptionsBuilder options)
|
||||||
|
{
|
||||||
|
return dbProvider switch
|
||||||
|
{
|
||||||
|
DatabaseProvider.Sqlite => options.UseSqlite(connection),
|
||||||
|
DatabaseProvider.Mysql => options.UseMySql(connection, ServerVersion.AutoDetect(connection)),
|
||||||
|
DatabaseProvider.Postgresql => options.UseNpgsql(connection),
|
||||||
|
_ => throw new ArgumentException("Unsupported database provider", Enum.GetName(dbProvider))
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user