Skip to content

Commit 449ebc9

Browse files
refactor: use IConfiguration instead of IServiceProvider to get connection string
1 parent 10eb204 commit 449ebc9

File tree

3 files changed

+25
-12
lines changed

3 files changed

+25
-12
lines changed

src/EntityDb.MongoDb.Provisioner/Extensions/IServiceCollectionExtensions.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using EntityDb.Abstractions.Transactions;
22
using EntityDb.MongoDb.Provisioner.Transactions;
3+
using Microsoft.Extensions.Configuration;
34
using Microsoft.Extensions.DependencyInjection;
45
using System;
56

@@ -21,11 +22,13 @@ public static class IServiceCollectionExtensions
2122
/// </remarks>
2223
public static void AddAutoProvisionTestModeMongoDbTransactions<TEntity>(
2324
this IServiceCollection serviceCollection, string databaseName,
24-
Func<IServiceProvider, string> getConnectionString)
25+
Func<IConfiguration, string> getConnectionString)
2526
{
2627
serviceCollection.AddSingleton<ITransactionRepositoryFactory<TEntity>>(serviceProvider =>
2728
{
28-
var connectionString = getConnectionString.Invoke(serviceProvider);
29+
var configuration = serviceProvider.GetRequiredService<IConfiguration>();
30+
31+
var connectionString = getConnectionString.Invoke(configuration);
2932

3033
return AutoProvisionTestModeMongoDbTransactionRepositoryFactory<TEntity>.Create(serviceProvider,
3134
connectionString, databaseName);

src/EntityDb.MongoDb/Extensions/IServiceCollectionExtensions.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using EntityDb.Abstractions.Transactions;
22
using EntityDb.MongoDb.Transactions;
3+
using Microsoft.Extensions.Configuration;
34
using Microsoft.Extensions.DependencyInjection;
45
using System;
56
using System.Diagnostics.CodeAnalysis;
@@ -22,16 +23,18 @@ public static class IServiceCollectionExtensions
2223
/// <remarks>
2324
/// The production-ready implementation will commit transactions as they are passed in. If you need write an
2425
/// integration test, consider using
25-
/// <see cref="AddTestModeMongoDbTransactions{TEntity}(IServiceCollection, string, Func{IServiceProvider, string})" />
26+
/// <see cref="AddTestModeMongoDbTransactions{TEntity}(IServiceCollection, string, Func{IConfiguration, string})" />
2627
/// instead.
2728
/// </remarks>
2829
[ExcludeFromCodeCoverage(Justification = "Tests use TestMode.")]
2930
public static void AddMongoDbTransactions<TEntity>(this IServiceCollection serviceCollection,
30-
string databaseName, Func<IServiceProvider, string> getConnectionString)
31+
string databaseName, Func<IConfiguration, string> getConnectionString)
3132
{
3233
serviceCollection.AddScoped<ITransactionRepositoryFactory<TEntity>>(serviceProvider =>
3334
{
34-
var connectionString = getConnectionString.Invoke(serviceProvider);
35+
var configuration = serviceProvider.GetRequiredService<IConfiguration>();
36+
37+
var connectionString = getConnectionString.Invoke(configuration);
3538

3639
return MongoDbTransactionRepositoryFactory<TEntity>.Create(serviceProvider, connectionString,
3740
databaseName);
@@ -50,11 +53,13 @@ public static void AddMongoDbTransactions<TEntity>(this IServiceCollection servi
5053
/// <see cref="ITransactionRepository{TEntity}" /> is disposed.
5154
/// </remarks>
5255
public static void AddTestModeMongoDbTransactions<TEntity>(this IServiceCollection serviceCollection,
53-
string databaseName, Func<IServiceProvider, string> getConnectionString)
56+
string databaseName, Func<IConfiguration, string> getConnectionString)
5457
{
5558
serviceCollection.AddScoped<ITransactionRepositoryFactory<TEntity>>(serviceProvider =>
5659
{
57-
var connectionString = getConnectionString.Invoke(serviceProvider);
60+
var configuration = serviceProvider.GetRequiredService<IConfiguration>();
61+
62+
var connectionString = getConnectionString.Invoke(configuration);
5863

5964
return TestModeMongoDbTransactionRepositoryFactory<TEntity>.Create(serviceProvider, connectionString,
6065
databaseName);

src/EntityDb.Redis/Extensions/IServiceCollectionExtensions.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using EntityDb.Abstractions.Transactions;
33
using EntityDb.Common.Transactions;
44
using EntityDb.Redis.Snapshots;
5+
using Microsoft.Extensions.Configuration;
56
using Microsoft.Extensions.DependencyInjection;
67
using System;
78
using System.Diagnostics.CodeAnalysis;
@@ -24,19 +25,21 @@ public static class IServiceCollectionExtensions
2425
/// <remarks>
2526
/// The production-ready implementation will store snapshots as they come in. If you need write an integration test,
2627
/// consider using
27-
/// <see cref="AddTestModeRedisSnapshots{TEntity}(IServiceCollection, string, Func{IServiceProvider, string})" />
28+
/// <see cref="AddTestModeRedisSnapshots{TEntity}(IServiceCollection, string, Func{IConfiguration, string})" />
2829
/// instead.
2930
/// </remarks>
3031
[ExcludeFromCodeCoverage(Justification = "Tests use TestMode.")]
3132
public static void AddRedisSnapshots<TEntity>(this IServiceCollection serviceCollection, string keyNamespace,
32-
Func<IServiceProvider, string> getConnectionString)
33+
Func<IConfiguration, string> getConnectionString)
3334
{
3435
serviceCollection.AddSingleton<ITransactionSubscriber<TEntity>>(serviceProvider =>
3536
SnapshottingTransactionSubscriber<TEntity>.Create(serviceProvider, false));
3637

3738
serviceCollection.AddSingleton<ISnapshotRepositoryFactory<TEntity>>(serviceProvider =>
3839
{
39-
var connectionString = getConnectionString.Invoke(serviceProvider);
40+
var configuration = serviceProvider.GetRequiredService<IConfiguration>();
41+
42+
var connectionString = getConnectionString.Invoke(configuration);
4043

4144
return RedisSnapshotRepositoryFactory<TEntity>.Create(serviceProvider, connectionString, keyNamespace);
4245
});
@@ -57,14 +60,16 @@ public static void AddRedisSnapshots<TEntity>(this IServiceCollection serviceCol
5760
/// when the repository is disposed.
5861
/// </remarks>
5962
public static void AddTestModeRedisSnapshots<TEntity>(this IServiceCollection serviceCollection,
60-
string keyNamespace, Func<IServiceProvider, string> getConnectionString)
63+
string keyNamespace, Func<IConfiguration, string> getConnectionString)
6164
{
6265
serviceCollection.AddSingleton<ITransactionSubscriber<TEntity>>(serviceProvider =>
6366
SnapshottingTransactionSubscriber<TEntity>.Create(serviceProvider, true));
6467

6568
serviceCollection.AddSingleton<ISnapshotRepositoryFactory<TEntity>>(serviceProvider =>
6669
{
67-
var connectionString = getConnectionString.Invoke(serviceProvider);
70+
var configuration = serviceProvider.GetRequiredService<IConfiguration>();
71+
72+
var connectionString = getConnectionString.Invoke(configuration);
6873

6974
return TestModeRedisSnapshotRepositoryFactory<TEntity>.Create(serviceProvider, connectionString,
7075
keyNamespace);

0 commit comments

Comments
 (0)