60 lines
2.2 KiB
C#
60 lines
2.2 KiB
C#
using Microsoft.Extensions.DependencyInjection;
|
|
using Modules.Rating.Api.Database;
|
|
using Modules.Rating.Api.Repositories;
|
|
using MongoDB.Driver;
|
|
|
|
namespace Modules.Rating.Api
|
|
{
|
|
public static class ServiceCollectionExtensions
|
|
{
|
|
public static IServiceCollection AddRates(this IServiceCollection services, string connectionString)
|
|
{
|
|
AddMongoDb(services, connectionString);
|
|
services.AddScoped(q =>
|
|
{
|
|
var context = new MongoDbContext(q.GetRequiredService<IMongoDatabase>());
|
|
context.Initialize();
|
|
return context;
|
|
});
|
|
AddRepositories(services);
|
|
return services;
|
|
}
|
|
|
|
public static IServiceCollection AddRates(this IServiceCollection services, string connectionString, string? databaseName)
|
|
{
|
|
AddMongoDb(services, connectionString, databaseName);
|
|
//services.AddScoped<MongoDbContext>();
|
|
services.AddScoped(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<RateRepository>();
|
|
}
|
|
|
|
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));
|
|
}
|
|
}
|
|
}
|