69 lines
2.7 KiB
C#
69 lines
2.7 KiB
C#
using Microsoft.Extensions.DependencyInjection;
|
|
using Modules.Library.Application.Gateways;
|
|
using Modules.Library.Database.Database;
|
|
using Modules.Library.Database.GatewaysImplementations;
|
|
using Modules.Library.Database.Repositories;
|
|
using MongoDB.Driver;
|
|
|
|
namespace Modules.Library.Database;
|
|
|
|
public static class ServiceCollectionExtensions
|
|
{
|
|
public static IServiceCollection AddDatabase(this IServiceCollection services, string connectionString)
|
|
{
|
|
AddMongoDb(services, connectionString);
|
|
services.AddScoped<MongoDbContext>(q =>
|
|
{
|
|
var context = new MongoDbContext(q.GetRequiredService<IMongoDatabase>());
|
|
context.Initialize();
|
|
return context;
|
|
});
|
|
AddRepositories(services);
|
|
AddGateways(services);
|
|
return services;
|
|
}
|
|
|
|
public static IServiceCollection AddDatabase(this IServiceCollection services, string connectionString, string? databaseName)
|
|
{
|
|
AddMongoDb(services, connectionString, databaseName);
|
|
//services.AddScoped<MongoDbContext>();
|
|
services.AddScoped<MongoDbContext>(q =>
|
|
{
|
|
var context = new MongoDbContext(q.GetRequiredService<IMongoDatabase>());
|
|
context.Initialize();
|
|
return context;
|
|
});
|
|
AddRepositories(services);
|
|
AddGateways(services);
|
|
return services;
|
|
}
|
|
|
|
private static void AddRepositories(IServiceCollection services)
|
|
{
|
|
services.AddScoped<AnimeTitleRepository>();
|
|
services.AddScoped<GenreRepository>();
|
|
services.AddScoped<LanguageRepository>();
|
|
services.AddScoped<MediaInfoRepository>();
|
|
}
|
|
|
|
private static void AddGateways(IServiceCollection services)
|
|
{
|
|
services.AddScoped<IAnimeTitleGateway, AnimeTitleGateway>();
|
|
services.AddScoped<IGenreGateway, GenreGateway>();
|
|
services.AddScoped<ILanguageGateway, LanguageGateway>();
|
|
//services.AddScoped<IMediaInfoGateway, MediaInfoGateway>();
|
|
}
|
|
|
|
private static void AddMongoDb(this IServiceCollection services, string? connectionString)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(connectionString)) throw new ArgumentNullException(nameof(connectionString));
|
|
services.AddSingleton(new MongoClient(connectionString));
|
|
}
|
|
|
|
private static void AddMongoDb(IServiceCollection services, string? connectionString, string? databaseName)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(connectionString)) throw new ArgumentNullException(nameof(connectionString));
|
|
if (string.IsNullOrWhiteSpace(databaseName)) throw new ArgumentNullException(nameof(databaseName));
|
|
services.AddSingleton(new MongoClient(connectionString).GetDatabase(databaseName));
|
|
}
|
|
} |