Skip to content

Commit b060654

Browse files
authored
Merge pull request #22 from json-api-dotnet/update-to-jadnc-v5.3.0
Update to JsonApiDotNetCore v5.3.0
2 parents bd9edd3 + da00cd5 commit b060654

File tree

16 files changed

+39
-27
lines changed

16 files changed

+39
-27
lines changed

Directory.Build.props

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
<PropertyGroup>
33
<TargetFrameworkName>net6.0</TargetFrameworkName>
44
<AspNetVersion>6.0.*</AspNetVersion>
5-
<JsonApiDotNetCoreVersion>5.2.0</JsonApiDotNetCoreVersion>
6-
<MongoDBDriverVersion>2.15.0</MongoDBDriverVersion>
5+
<JsonApiDotNetCoreVersion>5.3.0</JsonApiDotNetCoreVersion>
6+
<MongoDBDriverVersion>2.20.0</MongoDBDriverVersion>
77
<JsonApiDotNetCoreMongoDbVersionPrefix>5.1.3</JsonApiDotNetCoreMongoDbVersionPrefix>
88
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)CodingGuidelines.ruleset</CodeAnalysisRuleSet>
99
<WarningLevel>9999</WarningLevel>
@@ -14,7 +14,7 @@
1414
</PropertyGroup>
1515

1616
<ItemGroup>
17-
<PackageReference Include="JetBrains.Annotations" Version="2022.3.1" PrivateAssets="All" />
17+
<PackageReference Include="JetBrains.Annotations" Version="2023.2.0" PrivateAssets="All" />
1818
<PackageReference Include="CSharpGuidelinesAnalyzer" Version="3.8.3" PrivateAssets="All" />
1919
<AdditionalFiles Include="$(MSBuildThisFileDirectory)CSharpGuidelinesAnalyzer.config" Visible="False" />
2020
</ItemGroup>
@@ -31,7 +31,7 @@
3131

3232
<!-- Test Project Dependencies -->
3333
<PropertyGroup>
34-
<CoverletVersion>3.2.*</CoverletVersion>
34+
<CoverletVersion>6.0.*</CoverletVersion>
3535
<TestSdkVersion>17.6.*</TestSdkVersion>
3636
</PropertyGroup>
3737
</Project>

PackageReadme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Persistence layer implementation for use of [MongoDB](https://www.mongodb.com/) in APIs using [JsonApiDotNetCore](https://www.jsonapi.net/).

src/JsonApiDotNetCore.MongoDb/Configuration/ServiceCollectionExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using JsonApiDotNetCore.MongoDb.AtomicOperations;
44
using JsonApiDotNetCore.MongoDb.Queries.Internal;
55
using JsonApiDotNetCore.MongoDb.Repositories;
6-
using JsonApiDotNetCore.Queries.Internal;
6+
using JsonApiDotNetCore.Queries;
77
using Microsoft.Extensions.DependencyInjection;
88

99
namespace JsonApiDotNetCore.MongoDb.Configuration;

src/JsonApiDotNetCore.MongoDb/JsonApiDotNetCore.MongoDb.csproj

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,19 @@
1515
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
1616
<PackageReleaseNotes>See https://github.com/json-api-dotnet/JsonApiDotNetCore.MongoDb/releases.</PackageReleaseNotes>
1717
<PackageIcon>logo.png</PackageIcon>
18+
<PackageReadmeFile>PackageReadme.md</PackageReadmeFile>
1819
<PublishRepositoryUrl>true</PublishRepositoryUrl>
1920
<EmbedUntrackedSources>true</EmbedUntrackedSources>
2021
<DebugType>embedded</DebugType>
2122
</PropertyGroup>
2223

24+
<PropertyGroup Condition="'$(APPVEYOR)' != ''">
25+
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
26+
</PropertyGroup>
27+
2328
<ItemGroup>
24-
<None Include="..\..\logo.png" Visible="false">
25-
<Pack>True</Pack>
26-
<PackagePath></PackagePath>
27-
</None>
29+
<None Include="..\..\logo.png" Visible="false" Pack="True" PackagePath="" />
30+
<None Include="..\..\PackageReadme.md" Visible="false" Pack="True" PackagePath="" />
2831
</ItemGroup>
2932

3033
<ItemGroup>

src/JsonApiDotNetCore.MongoDb/Queries/Internal/HideRelationshipsSparseFieldSetCache.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using JsonApiDotNetCore.Configuration;
33
using JsonApiDotNetCore.MongoDb.Resources;
44
using JsonApiDotNetCore.Queries;
5-
using JsonApiDotNetCore.Queries.Internal;
65
using JsonApiDotNetCore.Resources;
76
using JsonApiDotNetCore.Resources.Annotations;
87

src/JsonApiDotNetCore.MongoDb/Repositories/MongoRepository.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
using JsonApiDotNetCore.MongoDb.Resources;
88
using JsonApiDotNetCore.Queries;
99
using JsonApiDotNetCore.Queries.Expressions;
10-
using JsonApiDotNetCore.Queries.Internal.QueryableBuilding;
10+
using JsonApiDotNetCore.Queries.QueryableBuilding;
1111
using JsonApiDotNetCore.Repositories;
1212
using JsonApiDotNetCore.Resources;
1313
using JsonApiDotNetCore.Resources.Annotations;
@@ -29,28 +29,31 @@ public class MongoRepository<TResource, TId> : IResourceRepository<TResource, TI
2929
private readonly IResourceFactory _resourceFactory;
3030
private readonly IEnumerable<IQueryConstraintProvider> _constraintProviders;
3131
private readonly IResourceDefinitionAccessor _resourceDefinitionAccessor;
32+
private readonly IQueryableBuilder _queryableBuilder;
3233

3334
protected virtual IMongoCollection<TResource> Collection => _mongoDataAccess.MongoDatabase.GetCollection<TResource>(typeof(TResource).Name);
3435

3536
/// <inheritdoc />
3637
public virtual string? TransactionId => _mongoDataAccess.TransactionId;
3738

3839
public MongoRepository(IMongoDataAccess mongoDataAccess, ITargetedFields targetedFields, IResourceGraph resourceGraph, IResourceFactory resourceFactory,
39-
IEnumerable<IQueryConstraintProvider> constraintProviders, IResourceDefinitionAccessor resourceDefinitionAccessor)
40+
IEnumerable<IQueryConstraintProvider> constraintProviders, IResourceDefinitionAccessor resourceDefinitionAccessor, IQueryableBuilder queryableBuilder)
4041
{
4142
ArgumentGuard.NotNull(mongoDataAccess);
4243
ArgumentGuard.NotNull(targetedFields);
4344
ArgumentGuard.NotNull(resourceGraph);
4445
ArgumentGuard.NotNull(resourceFactory);
4546
ArgumentGuard.NotNull(constraintProviders);
4647
ArgumentGuard.NotNull(resourceDefinitionAccessor);
48+
ArgumentGuard.NotNull(queryableBuilder);
4749

4850
_mongoDataAccess = mongoDataAccess;
4951
_targetedFields = targetedFields;
5052
_resourceGraph = resourceGraph;
5153
_resourceFactory = resourceFactory;
5254
_constraintProviders = constraintProviders;
5355
_resourceDefinitionAccessor = resourceDefinitionAccessor;
56+
_queryableBuilder = queryableBuilder;
5457

5558
if (!typeof(TResource).IsAssignableTo(typeof(IMongoIdentifiable)))
5659
{
@@ -112,12 +115,9 @@ protected virtual IMongoQueryable<TResource> ApplyQueryLayer(QueryLayer queryLay
112115
source = queryableHandler.Apply(source);
113116
}
114117

115-
var nameFactory = new LambdaParameterNameFactory();
118+
var context = QueryableBuilderContext.CreateRoot(source, typeof(Queryable), new MongoModel(_resourceGraph), null);
119+
Expression expression = _queryableBuilder.ApplyQuery(queryLayer, context);
116120

117-
var builder = new QueryableBuilder(source.Expression, source.ElementType, typeof(Queryable), nameFactory, _resourceFactory,
118-
new MongoModel(_resourceGraph));
119-
120-
Expression expression = builder.ApplyQuery(queryLayer);
121121
return (IMongoQueryable<TResource>)source.Provider.CreateQuery<TResource>(expression);
122122
}
123123

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/AtomicOperations/Transactions/LyricRepository.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using JsonApiDotNetCore.MongoDb.AtomicOperations;
55
using JsonApiDotNetCore.MongoDb.Repositories;
66
using JsonApiDotNetCore.Queries;
7+
using JsonApiDotNetCore.Queries.QueryableBuilding;
78
using JsonApiDotNetCore.Resources;
89

910
namespace JsonApiDotNetCoreMongoDbTests.IntegrationTests.AtomicOperations.Transactions;
@@ -19,8 +20,9 @@ public sealed class LyricRepository : MongoRepository<Lyric, string?>, IAsyncDis
1920
public override string TransactionId => _transaction.TransactionId;
2021

2122
public LyricRepository(IMongoDataAccess mongoDataAccess, ITargetedFields targetedFields, IResourceGraph resourceGraph, IResourceFactory resourceFactory,
22-
IEnumerable<IQueryConstraintProvider> constraintProviders, IResourceDefinitionAccessor resourceDefinitionAccessor)
23-
: base(mongoDataAccess, targetedFields, resourceGraph, resourceFactory, constraintProviders, resourceDefinitionAccessor)
23+
IEnumerable<IQueryConstraintProvider> constraintProviders, IResourceDefinitionAccessor resourceDefinitionAccessor,
24+
IQueryableBuilder queryableBuilder)
25+
: base(mongoDataAccess, targetedFields, resourceGraph, resourceFactory, constraintProviders, resourceDefinitionAccessor, queryableBuilder)
2426
{
2527
IMongoDataAccess otherDataAccess = new MongoDataAccess(mongoDataAccess.MongoDatabase);
2628

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/AtomicOperations/Transactions/MusicTrackRepository.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using JsonApiDotNetCore.Configuration;
33
using JsonApiDotNetCore.MongoDb.Repositories;
44
using JsonApiDotNetCore.Queries;
5+
using JsonApiDotNetCore.Queries.QueryableBuilding;
56
using JsonApiDotNetCore.Resources;
67

78
namespace JsonApiDotNetCoreMongoDbTests.IntegrationTests.AtomicOperations.Transactions;
@@ -14,8 +15,9 @@ public sealed class MusicTrackRepository : MongoRepository<MusicTrack, string?>
1415
public override string? TransactionId => null;
1516

1617
public MusicTrackRepository(IMongoDataAccess mongoDataAccess, ITargetedFields targetedFields, IResourceGraph resourceGraph,
17-
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, IResourceDefinitionAccessor resourceDefinitionAccessor)
18-
: base(mongoDataAccess, targetedFields, resourceGraph, resourceFactory, constraintProviders, resourceDefinitionAccessor)
18+
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, IResourceDefinitionAccessor resourceDefinitionAccessor,
19+
IQueryableBuilder queryableBuilder)
20+
: base(mongoDataAccess, targetedFields, resourceGraph, resourceFactory, constraintProviders, resourceDefinitionAccessor, queryableBuilder)
1921
{
2022
}
2123
}

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/QueryStrings/AccountPreferences.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace JsonApiDotNetCoreMongoDbTests.IntegrationTests.QueryStrings;
66

77
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
8+
[Resource(ControllerNamespace = "JsonApiDotNetCoreMongoDbTests.IntegrationTests.QueryStrings")]
89
public sealed class AccountPreferences : HexStringMongoIdentifiable
910
{
1011
[Attr]

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/QueryStrings/Filtering/FilterDataTypeTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
265265
ErrorObject error = responseDocument.Errors[0];
266266
error.StatusCode.Should().Be(HttpStatusCode.BadRequest);
267267
error.Title.Should().Be("The specified filter is invalid.");
268-
error.Detail.Should().Be("Failed to convert 'ABC' of type 'String' to type 'Int32'.");
268+
error.Detail.Should().StartWith("Failed to convert 'ABC' of type 'String' to type 'Int32'.");
269269
error.Source.ShouldNotBeNull();
270270
error.Source.Parameter.Should().Be("filter");
271271
}

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/QueryStrings/Label.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace JsonApiDotNetCoreMongoDbTests.IntegrationTests.QueryStrings;
77

88
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
9+
[Resource(ControllerNamespace = "JsonApiDotNetCoreMongoDbTests.IntegrationTests.QueryStrings")]
910
public sealed class Label : HexStringMongoIdentifiable
1011
{
1112
[Attr]

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/QueryStrings/LoginAttempt.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace JsonApiDotNetCoreMongoDbTests.IntegrationTests.QueryStrings;
66

77
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
8+
[Resource(ControllerNamespace = "JsonApiDotNetCoreMongoDbTests.IntegrationTests.QueryStrings")]
89
public sealed class LoginAttempt : HexStringMongoIdentifiable
910
{
1011
[Attr]

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/QueryStrings/SparseFieldSets/ResultCapturingRepository.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using JsonApiDotNetCore.Configuration;
33
using JsonApiDotNetCore.MongoDb.Repositories;
44
using JsonApiDotNetCore.Queries;
5+
using JsonApiDotNetCore.Queries.QueryableBuilding;
56
using JsonApiDotNetCore.Resources;
67

78
namespace JsonApiDotNetCoreMongoDbTests.IntegrationTests.QueryStrings.SparseFieldSets;
@@ -17,8 +18,8 @@ public sealed class ResultCapturingRepository<TResource, TId> : MongoRepository<
1718

1819
public ResultCapturingRepository(IMongoDataAccess mongoDataAccess, ITargetedFields targetedFields, IResourceGraph resourceGraph,
1920
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, IResourceDefinitionAccessor resourceDefinitionAccessor,
20-
ResourceCaptureStore captureStore)
21-
: base(mongoDataAccess, targetedFields, resourceGraph, resourceFactory, constraintProviders, resourceDefinitionAccessor)
21+
IQueryableBuilder queryableBuilder, ResourceCaptureStore captureStore)
22+
: base(mongoDataAccess, targetedFields, resourceGraph, resourceFactory, constraintProviders, resourceDefinitionAccessor, queryableBuilder)
2223
{
2324
_captureStore = captureStore;
2425
}

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/ReadWrite/WorkTag.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace JsonApiDotNetCoreMongoDbTests.IntegrationTests.ReadWrite;
77

88
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
9+
[Resource(ControllerNamespace = "JsonApiDotNetCoreMongoDbTests.IntegrationTests.ReadWrite")]
910
public sealed class WorkTag : HexStringMongoIdentifiable
1011
{
1112
[Attr]

test/JsonApiDotNetCoreMongoDbTests/IntegrationTests/ResourceDefinitions/Reading/MoonDefinition.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public override QueryStringParameterHandlers<Moon> OnRegisterQueryableHandlersFo
2929

3030
private static IQueryable<Moon> FilterByRadius(IQueryable<Moon> source, StringValues parameterValue)
3131
{
32-
bool isFilterOnLargerThan = bool.Parse(parameterValue);
32+
bool isFilterOnLargerThan = bool.Parse(parameterValue.ToString());
3333
return isFilterOnLargerThan ? source.Where(moon => moon.SolarRadius > 1m) : source.Where(moon => moon.SolarRadius <= 1m);
3434
}
3535
}

test/TestBuildingBlocks/TestBuildingBlocks.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="$(AspNetVersion)" />
1515
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(TestSdkVersion)" />
1616
<PackageReference Include="Mongo2Go" Version="3.1.3" />
17-
<PackageReference Include="xunit" Version="2.4.2" />
18-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5" PrivateAssets="All" />
17+
<PackageReference Include="xunit" Version="2.5.0" />
18+
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.0" PrivateAssets="All" />
1919
</ItemGroup>
2020
</Project>

0 commit comments

Comments
 (0)