Adapt the RegisterBlueprint to connect with local mongodb

This commit is contained in:
Oscar Morales 2025-06-04 11:55:13 -06:00
parent a56818bcf8
commit 4103c4da8d

View File

@ -22,43 +22,37 @@ namespace Core.Blueprint.DAL.Mongo.Configuration
/// <returns>The updated <see cref="IServiceCollection"/> with MongoDB services registered.</returns> /// <returns>The updated <see cref="IServiceCollection"/> with MongoDB services registered.</returns>
public static IServiceCollection AddMongoLayer(this IServiceCollection services, IConfiguration configuration) public static IServiceCollection AddMongoLayer(this IServiceCollection services, IConfiguration configuration)
{ {
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? string.Empty; string text = "Local";
services.AddSingleton<IMongoContext, MongoContext>(); services.AddSingleton<IMongoContext, MongoContext>();
string ConnectionString = configuration.GetSection("ConnectionStrings:MongoDB").Value ?? string.Empty;
var ConnectionString = configuration.GetSection("ConnectionStrings:MongoDB").Value ?? string.Empty; string Databasename = configuration.GetSection("MongoDb:DatabaseName").Value ?? string.Empty;
var Databasename = configuration.GetSection("MongoDb:DatabaseName").Value ?? string.Empty; string Audience = text == "Local"
var Audience = (environment == "Local")
? configuration.GetSection("MongoDb:LocalAudience").Value ? configuration.GetSection("MongoDb:LocalAudience").Value
: configuration.GetSection("MongoDb:Audience").Value; : configuration.GetSection("MongoDb:Audience").Value;
if (string.IsNullOrEmpty(ConnectionString) || string.IsNullOrEmpty(Databasename) || string.IsNullOrEmpty(Audience)) if (string.IsNullOrEmpty(ConnectionString) || string.IsNullOrEmpty(Databasename) || string.IsNullOrEmpty(Audience))
{
throw new InvalidOperationException("Mongo connection is not configured correctly."); throw new InvalidOperationException("Mongo connection is not configured correctly.");
}
services.Configure<MongoDbSettings>(options => services.Configure(delegate (MongoDbSettings options)
{ {
options.ConnectionString = ConnectionString; options.ConnectionString = ConnectionString;
options.Databasename = Databasename; options.Databasename = Databasename;
options.Audience = Audience; options.Audience = Audience;
}); });
services.AddSingleton((Func<IServiceProvider, IMongoClient>)delegate (IServiceProvider serviceProvider)
services.AddSingleton<IMongoClient>(serviceProvider =>
{ {
var settings = serviceProvider.GetRequiredService<IOptions<MongoDbSettings>>().Value; MongoDbSettings value2 = serviceProvider.GetRequiredService<IOptions<MongoDbSettings>>().Value;
var mongoClientSettings = MongoClientSettings.FromConnectionString(settings.ConnectionString); MongoClientSettings mongoClientSettings = MongoClientSettings.FromConnectionString(value2.ConnectionString);
mongoClientSettings.Credential = MongoCredential.CreateOidcCredential(new AzureIdentityProvider(settings.Audience)); //mongoClientSettings.Credential = MongoCredential.CreateOidcCredential(new AzureIdentityProvider(value2.Audience));
return new MongoClient(mongoClientSettings); return new MongoClient(mongoClientSettings);
}); });
services.AddSingleton(delegate (IServiceProvider serviceProvider)
services.AddSingleton<IMongoDatabase>(serviceProvider =>
{ {
var settings = serviceProvider.GetRequiredService<IOptions<MongoDbSettings>>().Value; MongoDbSettings value = serviceProvider.GetRequiredService<IOptions<MongoDbSettings>>().Value;
var client = serviceProvider.GetRequiredService<IMongoClient>(); return serviceProvider.GetRequiredService<IMongoClient>().GetDatabase(value.Databasename);
return client.GetDatabase(settings.Databasename);
}); });
services.AddSingleton((Func<IServiceProvider, IMongoDbSettings>)((IServiceProvider serviceProvider) => serviceProvider.GetRequiredService<IOptions<MongoDbSettings>>().Value));
services.AddSingleton<IMongoDbSettings>(serviceProvider => serviceProvider.GetRequiredService<IOptions<MongoDbSettings>>().Value);
return services; return services;
} }
} }