Skip to content

Commit c177659

Browse files
Maurits MoeysMaurits Moeys
Maurits Moeys
authored and
Maurits Moeys
committed
fix: pagination
1 parent 7246ca9 commit c177659

File tree

3 files changed

+13
-15
lines changed

3 files changed

+13
-15
lines changed

src/JsonApiDotNetCore/Internal/PageManager.cs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,12 @@ public PageManager(ILinkBuilder linkBuilder, IJsonApiOptions options, IRequestMa
1515
{
1616
_linkBuilder = linkBuilder;
1717
_options = options;
18-
if (requestManager.QuerySet != null)
19-
{
20-
PageSize = requestManager.QuerySet?.PageQuery.PageSize != null ? requestManager.QuerySet.PageQuery.PageSize : _options.DefaultPageSize;
21-
}
22-
else
23-
{
24-
PageSize = _options.DefaultPageSize;
25-
}
26-
2718
DefaultPageSize = _options.DefaultPageSize;
19+
PageSize = _options.DefaultPageSize;
2820
}
2921
public int? TotalRecords { get; set; }
3022
public int PageSize { get; set; }
31-
public int DefaultPageSize { get; set; }
23+
public int DefaultPageSize { get; set; } // I think we shouldnt expose this
3224
public int CurrentPage { get; set; }
3325
public bool IsPaginated => PageSize > 0;
3426
public int TotalPages => (TotalRecords == null) ? -1 : (int)Math.Ceiling(decimal.Divide(TotalRecords.Value, PageSize));

src/JsonApiDotNetCore/Internal/Query/PageQuery.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ namespace JsonApiDotNetCore.Internal.Query
22
{
33
public class PageQuery
44
{
5-
public int PageSize { get; set; }
6-
public int PageOffset { get; set; } = 1;
5+
public int? PageSize { get; set; }
6+
public int? PageOffset { get; set; } = 1;
77
}
88
}

src/JsonApiDotNetCore/Middleware/RequestMiddleware.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ public class RequestMiddleware
2323
private readonly RequestDelegate _next;
2424
private IResourceGraph _resourceGraph;
2525
private HttpContext _httpContext;
26-
private IJsonApiOptions _options;
2726
private IJsonApiContext _jsonApiContext;
2827
private IRequestManager _requestManager;
28+
private IPageManager _pageManager;
2929
private IQueryParser _queryParser;
30+
private IJsonApiOptions _options;
3031

3132
public RequestMiddleware(RequestDelegate next)
3233
{
@@ -37,13 +38,15 @@ public async Task Invoke(HttpContext httpContext,
3738
IJsonApiContext jsonApiContext,
3839
IResourceGraph resourceGraph,
3940
IRequestManager requestManager,
41+
IPageManager pageManager,
4042
IQueryParser queryParser,
4143
IJsonApiOptions options)
4244
{
4345
_httpContext = httpContext;
4446
_jsonApiContext = jsonApiContext;
4547
_resourceGraph = resourceGraph;
4648
_requestManager = requestManager;
49+
_pageManager = pageManager;
4750
_queryParser = queryParser;
4851
_options = options;
4952

@@ -74,7 +77,7 @@ public async Task Invoke(HttpContext httpContext,
7477
}
7578
}
7679
/// <summary>
77-
/// Parses the uri, and helps you out
80+
/// Parses the uri
7881
/// </summary>
7982
/// <param name="context"></param>
8083
/// <param name="requestManager"></param>
@@ -83,7 +86,10 @@ protected void HandleUriParameters()
8386
if (_httpContext.Request.Query.Count > 0)
8487
{
8588
//requestManager.FullQuerySet = context.Request.Query;
86-
_requestManager.QuerySet = _queryParser.Parse(_httpContext.Request.Query);
89+
var querySet = _queryParser.Parse(_httpContext.Request.Query);
90+
_requestManager.QuerySet = querySet; //this shouldn't be exposed
91+
_pageManager.PageSize = querySet.PageQuery.PageSize ?? _pageManager.PageSize;
92+
_pageManager.CurrentPage = querySet.PageQuery.PageOffset ?? _pageManager.CurrentPage;
8793
_requestManager.IncludedRelationships = _requestManager.QuerySet.IncludedRelationships;
8894
}
8995
}

0 commit comments

Comments
 (0)