Skip to content

Commit ebb754d

Browse files
feat: include mongodb retry skip index creation parameter
When this parameter is included, the application will ignore the creation of its indexes. This makes the behavior explicit for the developer using the library.
1 parent 1cd76eb commit ebb754d

File tree

4 files changed

+30
-2
lines changed

4 files changed

+30
-2
lines changed

src/KafkaFlow.Retry.MongoDb/MongoDbDataProviderFactory.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,12 @@ public DataProviderCreationResult TryCreate(MongoDbSettings mongoDbSettings)
2323
{
2424
var mongoClient = new MongoClient(mongoDbSettings.ConnectionString);
2525
var dbContext = new DbContext(mongoDbSettings, mongoClient);
26-
DboConfigurations.TryAddIndexes(dbContext);
26+
27+
if (!mongoDbSettings.SkipIndexCreation)
28+
{
29+
DboConfigurations.TryAddIndexes(dbContext);
30+
}
31+
2732
return new DataProviderCreationResult(
2833
null,
2934
new RetryQueueDataProvider(

src/KafkaFlow.Retry.MongoDb/MongoDbSettings.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ namespace KafkaFlow.Retry.MongoDb;
55
[ExcludeFromCodeCoverage]
66
public class MongoDbSettings
77
{
8+
public bool SkipIndexCreation { get; set; }
9+
810
public string ConnectionString { get; set; }
911

1012
public string DatabaseName { get; set; }

src/KafkaFlow.Retry.MongoDb/RetryDurableDefinitionBuilderExtension.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@ public static RetryDurableDefinitionBuilder WithMongoDbDataProvider(
77
string connectionString,
88
string databaseName,
99
string mongoDbretryQueueCollectionName,
10-
string mongoDbretryQueueItemCollectionName)
10+
string mongoDbretryQueueItemCollectionName,
11+
bool mongoDbretrySkipIndexCreation = false)
1112
{
1213
var dataProviderCreation = new MongoDbDataProviderFactory()
1314
.TryCreate(
1415
new MongoDbSettings
1516
{
17+
SkipIndexCreation = mongoDbretrySkipIndexCreation,
1618
ConnectionString = connectionString,
1719
DatabaseName = databaseName,
1820
RetryQueueCollectionName = mongoDbretryQueueCollectionName,

tests/KafkaFlow.Retry.UnitTests/Repositories/MongoDb/RetryDurableDefinitionBuilderExtensionTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,23 @@ public void RetryDurableDefinitionBuilder_WithMongoDbDataProvider_Success()
4040
result.Should().NotBeNull();
4141
result.Should().BeOfType(typeof(RetryDurableDefinitionBuilder));
4242
}
43+
44+
[Fact]
45+
public void RetryDurableDefinitionBuilder_WithMongoDbDataProviderAndSkipIndexCreation_Success()
46+
{
47+
// Arrange
48+
var builder = new RetryDurableDefinitionBuilder();
49+
50+
// Act
51+
var result = builder.WithMongoDbDataProvider(
52+
"mongodb://localhost:27017/KafkaFlowRetry?maxPoolSize=1000",
53+
"Test",
54+
"RetryQueueCollectionName",
55+
"RetryQueueItemCollectionName",
56+
true
57+
);
58+
59+
result.Should().NotBeNull();
60+
result.Should().BeOfType(typeof(RetryDurableDefinitionBuilder));
61+
}
4362
}

0 commit comments

Comments
 (0)