Skip to content

Commit b969800

Browse files
committed
Update to latest version of MongoDB.Driver
1 parent 5eca467 commit b969800

File tree

4 files changed

+47
-19
lines changed

4 files changed

+47
-19
lines changed

package-versions.props

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22
<PropertyGroup>
33
<!-- Published dependencies (only update on major version change) -->
44
<JsonApiDotNetCoreFrozenVersion>5.6.0</JsonApiDotNetCoreFrozenVersion>
5-
<MongoDBDriverFrozenVersion>2.28.0</MongoDBDriverFrozenVersion>
5+
<MongoDBDriverFrozenVersion>3.3.0</MongoDBDriverFrozenVersion>
66

77
<!-- Non-published dependencies (these are safe to update, won't cause a breaking change) -->
88
<BogusVersion>35.6.*</BogusVersion>
99
<CoverletVersion>6.0.*</CoverletVersion>
10-
<EphemeralMongoVersion>2.0.*</EphemeralMongoVersion>
10+
<EphemeralMongoVersion>3.0.*</EphemeralMongoVersion>
1111
<FluentAssertionsVersion>7.2.*</FluentAssertionsVersion>
1212
<GitHubActionsTestLoggerVersion>2.4.*</GitHubActionsTestLoggerVersion>
1313
<InheritDocVersion>2.0.*</InheritDocVersion>
14-
<MongoDBDriverVersion>2.28.*</MongoDBDriverVersion>
14+
<MongoDBDriverVersion>3.3.*</MongoDBDriverVersion>
1515
<TestSdkVersion>17.13.*</TestSdkVersion>
1616
<XunitVersion>2.9.*</XunitVersion>
1717
<XunitVisualStudioVersion>2.8.*</XunitVisualStudioVersion>

src/JsonApiDotNetCore.MongoDb/Repositories/MongoRepository.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public virtual async Task<IReadOnlyCollection<TResource>> GetAsync(QueryLayer qu
7474
{
7575
ArgumentNullException.ThrowIfNull(queryLayer);
7676

77-
IMongoQueryable<TResource> query = ApplyQueryLayer(queryLayer);
77+
IQueryable<TResource> query = ApplyQueryLayer(queryLayer);
7878
List<TResource>? resources = await query.ToListAsync(cancellationToken);
7979
return resources.AsReadOnly();
8080
}
@@ -89,12 +89,12 @@ public virtual Task<int> CountAsync(FilterExpression? topFilter, CancellationTok
8989
Filter = topFilter
9090
};
9191

92-
IMongoQueryable<TResource> query = ApplyQueryLayer(layer);
92+
IQueryable<TResource> query = ApplyQueryLayer(layer);
9393
return query.CountAsync(cancellationToken);
9494
}
9595

9696
#pragma warning disable AV1130 // Return type in method signature should be an interface to an unchangeable collection
97-
protected virtual IMongoQueryable<TResource> ApplyQueryLayer(QueryLayer queryLayer)
97+
protected virtual IQueryable<TResource> ApplyQueryLayer(QueryLayer queryLayer)
9898
#pragma warning restore AV1130 // Return type in method signature should be an interface to an unchangeable collection
9999
{
100100
ArgumentNullException.ThrowIfNull(queryLayer);
@@ -127,7 +127,7 @@ protected virtual IMongoQueryable<TResource> ApplyQueryLayer(QueryLayer queryLay
127127
var context = QueryableBuilderContext.CreateRoot(source, typeof(Queryable), _mongoDataAccess.EntityModel, null);
128128
Expression expression = _queryableBuilder.ApplyQuery(queryLayer, context);
129129

130-
return (IMongoQueryable<TResource>)source.Provider.CreateQuery<TResource>(expression);
130+
return source.Provider.CreateQuery<TResource>(expression);
131131
}
132132

133133
protected virtual IQueryable<TResource> GetAll()

test/TestBuildingBlocks/MongoRunnerProvider.cs

+39-8
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
using EphemeralMongo;
2+
using MongoDB.Bson;
3+
using MongoDB.Bson.Serialization;
4+
using MongoDB.Bson.Serialization.Serializers;
25

36
namespace TestBuildingBlocks;
47

58
// Based on https://gist.github.com/asimmon/612b2d54f1a0d2b4e1115590d456e0be.
69
internal sealed class MongoRunnerProvider
710
{
811
public static readonly MongoRunnerProvider Instance = new();
12+
private static readonly GuidSerializer StandardGuidSerializer = new(GuidRepresentation.Standard);
913

1014
#if NET8_0
1115
private readonly object _lockObject = new();
@@ -26,11 +30,13 @@ public IMongoRunner Get()
2630
{
2731
if (_runner == null)
2832
{
33+
BsonSerializer.TryRegisterSerializer(StandardGuidSerializer);
34+
2935
var runnerOptions = new MongoRunnerOptions
3036
{
3137
// Single-node replica set mode is required for transaction support in MongoDB.
3238
UseSingleNodeReplicaSet = true,
33-
AdditionalArguments = "--quiet"
39+
AdditionalArguments = ["--quiet"]
3440
};
3541

3642
_runner = MongoRunner.Run(runnerOptions);
@@ -63,20 +69,45 @@ private sealed class MongoRunnerWrapper(MongoRunnerProvider owner, IMongoRunner
6369
private readonly MongoRunnerProvider _owner = owner;
6470
private IMongoRunner? _underlyingMongoRunner = underlyingMongoRunner;
6571

66-
public string ConnectionString => _underlyingMongoRunner?.ConnectionString ?? throw new ObjectDisposedException(nameof(IMongoRunner));
72+
public string ConnectionString
73+
{
74+
get
75+
{
76+
ObjectDisposedException.ThrowIf(_underlyingMongoRunner == null, typeof(IMongoRunner));
77+
return _underlyingMongoRunner.ConnectionString;
78+
}
79+
}
80+
81+
public void Import(string database, string collection, string inputFilePath, string[]? additionalArguments = null, bool drop = false,
82+
CancellationToken cancellationToken = default)
83+
{
84+
ObjectDisposedException.ThrowIf(_underlyingMongoRunner == null, typeof(IMongoRunner));
85+
86+
_underlyingMongoRunner.Import(database, collection, inputFilePath, additionalArguments, drop, cancellationToken);
87+
}
88+
89+
public async Task ImportAsync(string database, string collection, string inputFilePath, string[]? additionalArguments = null, bool drop = false,
90+
CancellationToken cancellationToken = default)
91+
{
92+
ObjectDisposedException.ThrowIf(_underlyingMongoRunner == null, typeof(IMongoRunner));
93+
94+
await _underlyingMongoRunner.ImportAsync(database, collection, inputFilePath, additionalArguments, drop, cancellationToken);
95+
}
6796

68-
public void Import(string database, string collection, string inputFilePath, string? additionalArguments = null, bool drop = false)
97+
public void Export(string database, string collection, string outputFilePath, string[]? additionalArguments = null,
98+
CancellationToken cancellationToken = default)
6999
{
70-
ObjectDisposedException.ThrowIf(_underlyingMongoRunner == null, this);
100+
ObjectDisposedException.ThrowIf(_underlyingMongoRunner == null, typeof(IMongoRunner));
71101

72-
_underlyingMongoRunner.Import(database, collection, inputFilePath, additionalArguments, drop);
102+
_underlyingMongoRunner.Export(database, collection, outputFilePath, additionalArguments, cancellationToken);
73103
}
74104

75-
public void Export(string database, string collection, string outputFilePath, string? additionalArguments = null)
105+
public async Task ExportAsync(string database, string collection, string outputFilePath, string[]? additionalArguments = null,
106+
CancellationToken cancellationToken = default)
76107
{
77-
ObjectDisposedException.ThrowIf(_underlyingMongoRunner == null, this);
108+
ObjectDisposedException.ThrowIf(_underlyingMongoRunner == null, typeof(IMongoRunner));
78109

79-
_underlyingMongoRunner.Export(database, collection, outputFilePath, additionalArguments);
110+
await _underlyingMongoRunner.ExportAsync(database, collection, outputFilePath, additionalArguments, cancellationToken);
80111
}
81112

82113
public void Dispose()

test/TestBuildingBlocks/TestBuildingBlocks.csproj

+1-4
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@
1212
<ItemGroup>
1313
<PackageReference Include="Bogus" Version="$(BogusVersion)" />
1414
<PackageReference Include="coverlet.collector" Version="$(CoverletVersion)" PrivateAssets="All" />
15-
<PackageReference Include="EphemeralMongo.Core" Version="$(EphemeralMongoVersion)" />
16-
<PackageReference Include="EphemeralMongo8.runtime.linux-x64" Version="$(EphemeralMongoVersion)" Condition="$([MSBuild]::IsOSPlatform('Linux'))" />
17-
<PackageReference Include="EphemeralMongo8.runtime.osx-arm64" Version="$(EphemeralMongoVersion)" Condition="$([MSBuild]::IsOSPlatform('OSX'))" />
18-
<PackageReference Include="EphemeralMongo8.runtime.win-x64" Version="$(EphemeralMongoVersion)" Condition="$([MSBuild]::IsOSPlatform('Windows'))" />
15+
<PackageReference Include="EphemeralMongo" Version="$(EphemeralMongoVersion)" />
1916
<PackageReference Include="GitHubActionsTestLogger" Version="$(GitHubActionsTestLoggerVersion)" PrivateAssets="All" />
2017
<PackageReference Include="FluentAssertions" Version="$(FluentAssertionsVersion)" />
2118
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="$(AspNetCoreVersion)" />

0 commit comments

Comments
 (0)