Skip to content

Commit 431e4f1

Browse files
Do not detect mongo derivate.
1 parent abdb423 commit 431e4f1

File tree

5 files changed

+106
-101
lines changed

5 files changed

+106
-101
lines changed

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<PackageProjectUrl>https://github.com/squidex/squidex</PackageProjectUrl>
1212
<PublishRepositoryUrl>true</PublishRepositoryUrl>
1313
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
14-
<Version>7.34.0</Version>
14+
<Version>7.35.0</Version>
1515
</PropertyGroup>
1616

1717
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">

events/Squidex.Events.Mongo/MongoEventStoreOptions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ public sealed class MongoEventStoreOptions : IValidatableOptions
1717

1818
public string PositionCollectionName { get; set; } = "Event2Position";
1919

20+
public MongoDerivate Derivate { get; set; }
21+
2022
public bool UseChangeStreams { get; set; }
2123

2224
public IEnumerable<ConfigurationError> Validate()
Lines changed: 65 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,65 @@
1-
// ==========================================================================
2-
// Squidex Headless CMS
3-
// ==========================================================================
4-
// Copyright (c) Squidex UG (haftungsbeschraenkt)
5-
// All rights reserved. Licensed under the MIT license.
6-
// ==========================================================================
7-
8-
using System.Globalization;
9-
using MongoDB.Bson;
10-
using MongoDB.Driver;
11-
12-
#pragma warning disable SA1313 // Parameter names should begin with lower-case letter
13-
#pragma warning disable MA0048 // File name must match type name
14-
15-
namespace Squidex.Events.Mongo;
16-
17-
public record struct MongoVersionInfo(MongoDerivate Dervivate, int Major)
18-
{
19-
public static async Task<MongoVersionInfo> DetectAsync(IMongoDatabase database,
20-
CancellationToken ct = default)
21-
{
22-
var command =
23-
new BsonDocumentCommand<BsonDocument>(new BsonDocument
24-
{
25-
{ "buildInfo", 1 },
26-
});
27-
28-
var document = await database.RunCommandAsync(command, cancellationToken: ct);
29-
30-
var versionString = document["version"].AsString;
31-
var versionMajor = versionString.Split('.')[0];
32-
33-
int.TryParse(versionMajor, NumberStyles.Integer, CultureInfo.InvariantCulture, out int version);
34-
35-
var serverString = document.ToString().ToLowerInvariant();
36-
bool Contains(string expected)
37-
{
38-
return serverString.Contains(expected, StringComparison.OrdinalIgnoreCase);
39-
}
40-
41-
var derivate = MongoDerivate.MongoDB;
42-
if (Contains("ferret"))
43-
{
44-
derivate = MongoDerivate.FerretDB;
45-
}
46-
else if (Contains("cosmos"))
47-
{
48-
derivate = MongoDerivate.CosmosDB;
49-
}
50-
else if (Contains("amazon") || Contains("docdb") || Contains("documentdb"))
51-
{
52-
derivate = MongoDerivate.DocumentDB;
53-
}
54-
55-
return new MongoVersionInfo(derivate, version);
56-
}
57-
}
58-
59-
public enum MongoDerivate
60-
{
61-
MongoDB,
62-
FerretDB,
63-
DocumentDB,
64-
CosmosDB,
65-
}
1+
// ==========================================================================
2+
// Squidex Headless CMS
3+
// ==========================================================================
4+
// Copyright (c) Squidex UG (haftungsbeschraenkt)
5+
// All rights reserved. Licensed under the MIT license.
6+
// ==========================================================================
7+
8+
using System.Globalization;
9+
using MongoDB.Bson;
10+
using MongoDB.Driver;
11+
12+
#pragma warning disable SA1313 // Parameter names should begin with lower-case letter
13+
#pragma warning disable MA0048 // File name must match type name
14+
15+
namespace Squidex.Events.Mongo;
16+
17+
public record struct MongoVersionInfo(MongoDerivate Dervivate, int Major)
18+
{
19+
public static async Task<MongoVersionInfo> DetectAsync(IMongoDatabase database, MongoDerivate derivate,
20+
CancellationToken ct = default)
21+
{
22+
var command =
23+
new BsonDocumentCommand<BsonDocument>(new BsonDocument
24+
{
25+
{ "buildInfo", 1 },
26+
});
27+
28+
var document = await database.RunCommandAsync(command, cancellationToken: ct);
29+
30+
var versionString = document["version"].AsString;
31+
var versionMajor = versionString.Split('.')[0];
32+
33+
int.TryParse(versionMajor, NumberStyles.Integer, CultureInfo.InvariantCulture, out int version);
34+
35+
var serverString = document.ToString().ToLowerInvariant();
36+
bool Contains(string expected)
37+
{
38+
return serverString.Contains(expected, StringComparison.OrdinalIgnoreCase);
39+
}
40+
41+
var derivate = MongoDerivate.MongoDB;
42+
if (Contains("ferret"))
43+
{
44+
derivate = MongoDerivate.FerretDB;
45+
}
46+
else if (Contains("cosmos"))
47+
{
48+
derivate = MongoDerivate.CosmosDB;
49+
}
50+
else if (Contains("amazon") || Contains("docdb") || Contains("documentdb"))
51+
{
52+
derivate = MongoDerivate.DocumentDB;
53+
}
54+
55+
return new MongoVersionInfo(derivate, version);
56+
}
57+
}
58+
59+
public enum MongoDerivate
60+
{
61+
MongoDB,
62+
FerretDB,
63+
DocumentDB,
64+
CosmosDB,
65+
}

events/Squidex.Events.Tests/MongoEventStoreDocumentDbTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public async Task InitializeAsync()
5252
{
5353
options.PollingInterval = TimeSpan.FromSeconds(0.1);
5454
options.UseChangeStreams = true;
55+
options.Derivate = Mongo.MongoDerivate.DocumentDB;
5556
}).Services;
5657

5758
Services = serviceCollection.BuildServiceProvider();
Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,37 @@
1-
// ==========================================================================
2-
// Squidex Headless CMS
3-
// ==========================================================================
4-
// Copyright (c) Squidex UG (haftungsbeschraenkt)
5-
// All rights reserved. Licensed under the MIT license.
6-
// ==========================================================================
7-
8-
using Microsoft.Extensions.DependencyInjection;
9-
using TestHelpers;
10-
using TestHelpers.MongoDb;
11-
12-
#pragma warning disable MA0048 // File name must match type name
13-
14-
namespace Squidex.Events;
15-
16-
public sealed class MongoEventStoreFerretDbFixture() : MongoFerretFixture("eventstore-mongo-ferretdb")
17-
{
18-
protected override void AddServices(IServiceCollection services)
19-
{
20-
services.AddMongoEventStore(TestUtils.Configuration, options =>
21-
{
22-
options.PollingInterval = TimeSpan.FromSeconds(0.1);
23-
});
24-
}
25-
}
26-
27-
public class MongoEventStoreFerretDbTests(MongoEventStoreFerretDbFixture fixture)
28-
: EventStoreTests, IClassFixture<MongoEventStoreFerretDbFixture>
29-
{
30-
protected override Task<IEventStore> CreateSutAsync()
31-
{
32-
var store = fixture.Services.GetRequiredService<IEventStore>();
33-
return Task.FromResult(store);
34-
}
35-
}
1+
// ==========================================================================
2+
// Squidex Headless CMS
3+
// ==========================================================================
4+
// Copyright (c) Squidex UG (haftungsbeschraenkt)
5+
// All rights reserved. Licensed under the MIT license.
6+
// ==========================================================================
7+
8+
using Microsoft.Extensions.DependencyInjection;
9+
using Squidex.Events.Mongo;
10+
using TestHelpers;
11+
using TestHelpers.MongoDb;
12+
13+
#pragma warning disable MA0048 // File name must match type name
14+
15+
namespace Squidex.Events;
16+
17+
public sealed class MongoEventStoreFerretDbFixture() : MongoFerretFixture("eventstore-mongo-ferretdb")
18+
{
19+
protected override void AddServices(IServiceCollection services)
20+
{
21+
services.AddMongoEventStore(TestUtils.Configuration, options =>
22+
{
23+
options.PollingInterval = TimeSpan.FromSeconds(0.1);
24+
options.Derivate = MongoDerivate.FerretDB;
25+
});
26+
}
27+
}
28+
29+
public class MongoEventStoreFerretDbTests(MongoEventStoreFerretDbFixture fixture)
30+
: EventStoreTests, IClassFixture<MongoEventStoreFerretDbFixture>
31+
{
32+
protected override Task<IEventStore> CreateSutAsync()
33+
{
34+
var store = fixture.Services.GetRequiredService<IEventStore>();
35+
return Task.FromResult(store);
36+
}
37+
}

0 commit comments

Comments
 (0)