diff --git a/src/Infrastructure/Extensions/ServiceCollectionExtensions.cs b/src/Infrastructure/Extensions/ServiceCollectionExtensions.cs index a321f89..cbb3cc9 100644 --- a/src/Infrastructure/Extensions/ServiceCollectionExtensions.cs +++ b/src/Infrastructure/Extensions/ServiceCollectionExtensions.cs @@ -287,8 +287,23 @@ public static class ServiceCollectionExtensions return services; } + var host = configuration[MongoDbOptions.MongoHost] ?? mongoDbOptions.Host; + ArgumentException.ThrowIfNullOrEmpty(host); + + var user = configuration[MongoDbOptions.MongoUser] ?? mongoDbOptions.User; + ArgumentException.ThrowIfNullOrEmpty(user); + + var password = configuration[MongoDbOptions.MongoPassword] ?? mongoDbOptions.Password; + ArgumentException.ThrowIfNullOrEmpty(password); + + var port = configuration[MongoDbOptions.MongoPort] ?? mongoDbOptions.Port; + ArgumentException.ThrowIfNullOrEmpty(port); + + var database = configuration[MongoDbOptions.MongoDatabase] ?? mongoDbOptions.Database; + ArgumentException.ThrowIfNullOrEmpty(database); + var connectionString = $"mongodb://{user}:{password}@{host}:{port}/{database}"; services.TryAddSingleton(_ => - new MongoClient(mongoDbOptions.ConnectionString) + new MongoClient(connectionString) .GetDatabase(mongoDbOptions.Database)); services.TryAddScoped(typeof(IMongoRepositoryBase<,>), typeof(MongoRepositoryBase<,>)); return services; diff --git a/src/Infrastructure/Options/MongoDbOptions.cs b/src/Infrastructure/Options/MongoDbOptions.cs index 68287b5..5269aba 100644 --- a/src/Infrastructure/Options/MongoDbOptions.cs +++ b/src/Infrastructure/Options/MongoDbOptions.cs @@ -4,7 +4,19 @@ public class MongoDbOptions : OptionsBase { public const string SectionName = "MongoDb"; - public string? ConnectionString { get; set; } + public const string MongoPassword = "MONGO_PASSWORD"; + public const string MongoUser = "MONGO_USER"; + + public const string MongoDatabase = "MONGO_DATABASE"; + + public const string MongoHost = "MONGO_HOST"; + + public const string MongoPort = "MONGO_PORT"; + + public string User { get; set; } + public string Password { get; set; } + public string Port { get; set; } + public string Host { get; set; } public string? Database { get; set; } } \ No newline at end of file