Skip to content

Commit 2f6166b

Browse files
authored
Merge pull request #2 from bkoelman/optimize-query-layer
Replace hacky PruningQueryableBuilder
2 parents ec55939 + 669792b commit 2f6166b

File tree

6 files changed

+71
-90
lines changed

6 files changed

+71
-90
lines changed

JsonApiBugReport/JsonApiBugReport.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
</PropertyGroup>
88

99
<PropertyGroup Condition="$(UseLatestJsonApiDotNetCoreVersion) == 'True'">
10-
<JsonApiDotNetCoreVersion>5.7.2-master-01199</JsonApiDotNetCoreVersion>
10+
<JsonApiDotNetCoreVersion>5.7.2-master-01204</JsonApiDotNetCoreVersion>
1111
</PropertyGroup>
1212

1313
<PropertyGroup Condition="$(UseLatestJsonApiDotNetCoreVersion) != 'True'">

JsonApiBugReport/JsonApiBugReport.http

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,40 @@ GET {{HostAddress}}/PriceGroup?include=products.unitGroup.units
88

99
GET {{HostAddress}}/PriceGroup?include=products
1010

11-
### Sparse fieldset on subset of derived types
11+
### Sparse fieldset on derived type Bundle
12+
13+
GET {{HostAddress}}/PriceGroup?include=products.unitGroup.units&fields[Bundle]=isTaxable
14+
15+
### Sparse fieldset on derived type Addon
16+
17+
GET {{HostAddress}}/PriceGroup?include=products.unitGroup.units&fields[Addon]=trialDuration,allowsCustomEndDate
18+
19+
### Sparse fieldset on subset of derived types [SLOW]
1220

1321
GET {{HostAddress}}/PriceGroup?include=products.unitGroup.units&fields[Addon]=trialDuration,allowsCustomEndDate&fields[Bundle]=isTaxable
1422

1523
### Non-default page size on top-level include
1624

1725
GET {{HostAddress}}/PriceGroup?include=products.unitGroup.units&page[size]=products:5
26+
27+
### Filter on type hierarchy
28+
29+
GET {{HostAddress}}/PriceGroup?include=products&filter[products]=equals(id,'FFFFFFFF-0000-0000-0000-FFFFFFFFFFFF')
30+
31+
### Filter after type hierarchy [HAS NEVER WORKED]
32+
33+
GET {{HostAddress}}/PriceGroup?include=products.unitGroup.units&filter[products.unitGroup.units]=equals(id,'FFFFFFFF-0000-0000-0000-FFFFFFFFFFFF')
34+
35+
### ProductBase
36+
### : CommonProduct
37+
### : ProductBundle = "Bundle"
38+
### : StandaloneProduct
39+
### : Product
40+
### : ProductAddon = "Addon"
41+
### : ProductGroup
42+
###
43+
### HasOne: UnitGroup
44+
### HasMany: Units
45+
###
46+
### PriceGroup
47+
### HasMany: Products

JsonApiBugReport/Program.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
{
2222
["Logging:LogLevel:JsonApiDotNetCore.Repositories"] = "Debug"
2323
});
24-
25-
builder.Services.AddTransient<IQueryableBuilder, PruningQueryableBuilder>();
2624
}
2725
else
2826
{
@@ -43,4 +41,4 @@
4341

4442
await app.RunDbMigrations();
4543

46-
await app.RunAsync();
44+
await app.RunAsync();

JsonApiBugReport/PruningQueryableBuilder.cs

Lines changed: 0 additions & 85 deletions
This file was deleted.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#nullable enable
2+
using System;
3+
using JsonApiBugReport.Data;
4+
using JsonApiDotNetCore.Configuration;
5+
using JsonApiDotNetCore.Queries.Expressions;
6+
using JsonApiDotNetCore.Resources;
7+
8+
namespace JsonApiBugReport.ResourceDefinitions;
9+
10+
public sealed class UnitDefinition(IResourceGraph resourceGraph)
11+
: JsonApiResourceDefinition<Unit, Guid>(resourceGraph)
12+
{
13+
private static readonly PaginationExpression NoPagination = new(PageNumber.ValueOne, null);
14+
15+
public override PaginationExpression OnApplyPagination(PaginationExpression? existingPagination)
16+
{
17+
return NoPagination;
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using JsonApiBugReport.Data;
2+
using JsonApiDotNetCore.Configuration;
3+
using JsonApiDotNetCore.Queries.Expressions;
4+
using JsonApiDotNetCore.Resources;
5+
6+
#nullable enable
7+
8+
namespace JsonApiBugReport.ResourceDefinitions;
9+
10+
public sealed class UnitGroupDefinition(IResourceGraph resourceGraph)
11+
: JsonApiResourceDefinition<UnitGroup, int>(resourceGraph)
12+
{
13+
private static readonly PaginationExpression NoPagination = new(PageNumber.ValueOne, null);
14+
15+
public override PaginationExpression OnApplyPagination(PaginationExpression? existingPagination)
16+
{
17+
return NoPagination;
18+
}
19+
}

0 commit comments

Comments
 (0)