59 lines
2.3 KiB
C#
59 lines
2.3 KiB
C#
using Microsoft.Extensions.DependencyInjection;
|
|
using Modules.Library.Application.Gateways;
|
|
using Modules.Library.Database.Database;
|
|
using Modules.Library.Database.Repositories;
|
|
using Modules.Library.Domain.Gateways;
|
|
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.GetService<IMongoDatabase>());
|
|
context.Initialize();
|
|
return context;
|
|
});
|
|
AddRepositories(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.GetService<IMongoDatabase>());
|
|
context.Initialize();
|
|
return context;
|
|
});
|
|
AddRepositories(services);
|
|
return services;
|
|
}
|
|
|
|
private static void AddRepositories(IServiceCollection services)
|
|
{
|
|
services.AddScoped<IAnimeTitleGateway, AnimeTitleRepository>();
|
|
services.AddScoped<IGenreGateway, GenreRepository>();
|
|
services.AddScoped<ILanguageGateway, LanguageRepository>();
|
|
services.AddScoped<IMediaInfoGateway, MediaInfoRepository>();
|
|
}
|
|
|
|
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));
|
|
}
|
|
} |