diff --git a/src/JsonApiDotNetCore/Services/QueryParser.cs b/src/JsonApiDotNetCore/Services/QueryParser.cs index 26c735e30c..297eb246a0 100644 --- a/src/JsonApiDotNetCore/Services/QueryParser.cs +++ b/src/JsonApiDotNetCore/Services/QueryParser.cs @@ -29,7 +29,7 @@ public QueryParser( _options = options; } - public QuerySet Parse(IQueryCollection query) + public virtual QuerySet Parse(IQueryCollection query) { var querySet = new QuerySet(); var disabledQueries = _controllerContext.GetControllerAttribute()?.QueryParams ?? QueryParams.None; @@ -78,7 +78,7 @@ public QuerySet Parse(IQueryCollection query) return querySet; } - private List ParseFilterQuery(string key, string value) + protected virtual List ParseFilterQuery(string key, string value) { // expected input = filter[id]=1 // expected input = filter[id]=eq:1 @@ -96,7 +96,7 @@ private List ParseFilterQuery(string key, string value) return queries; } - private (string operation, string value) ParseFilterOperation(string value) + protected virtual (string operation, string value) ParseFilterOperation(string value) { if (value.Length < 3) return (string.Empty, value); @@ -116,7 +116,7 @@ private List ParseFilterQuery(string key, string value) return (prefix, value); } - private PageQuery ParsePageQuery(PageQuery pageQuery, string key, string value) + protected virtual PageQuery ParsePageQuery(PageQuery pageQuery, string key, string value) { // expected input = page[size]=10 // page[number]=1 @@ -134,7 +134,7 @@ private PageQuery ParsePageQuery(PageQuery pageQuery, string key, string value) // sort=id,name // sort=-id - private List ParseSortParameters(string value) + protected virtual List ParseSortParameters(string value) { var sortParameters = new List(); value.Split(',').ToList().ForEach(p => @@ -154,7 +154,7 @@ private List ParseSortParameters(string value) return sortParameters; } - private List ParseIncludedRelationships(string value) + protected virtual List ParseIncludedRelationships(string value) { if (value.Contains(".")) throw new JsonApiException(400, "Deeply nested relationships are not supported"); @@ -164,7 +164,7 @@ private List ParseIncludedRelationships(string value) .ToList(); } - private List ParseFieldsQuery(string key, string value) + protected virtual List ParseFieldsQuery(string key, string value) { // expected: fields[TYPE]=prop1,prop2 var typeName = key.Split('[', ']')[1]; @@ -187,7 +187,7 @@ private List ParseFieldsQuery(string key, string value) return includedFields; } - private AttrAttribute GetAttribute(string propertyName) + protected virtual AttrAttribute GetAttribute(string propertyName) => _controllerContext .RequestEntity .Attributes