Skip to content

Commit dc66195

Browse files
committed
feat(filter-query): add like operator
1 parent 32b6a5d commit dc66195

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

src/JsonApiDotNetCore/Internal/Query/FilterOperations.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ public enum FilterOperations
66
lt = 1,
77
gt = 2,
88
le = 3,
9-
ge = 4
9+
ge = 4,
10+
like = 5
1011
}
1112
}

src/JsonApiDotNetCore/Internal/Query/QuerySet.cs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,26 +83,29 @@ private FilterQuery ParseFilterOperation(AttrAttribute attribute, string value)
8383
if(value.Length < 3)
8484
return new FilterQuery(attribute, value, FilterOperations.eq);
8585

86-
var prefix = value.Substring(0, 3);
86+
var operation = value.Split(':');
8787

88-
if(prefix[2] != ':')
88+
if(operation.Length == 1)
8989
return new FilterQuery(attribute, value, FilterOperations.eq);
9090

9191
// remove prefix from value
92-
value = value.Substring(3, value.Length - 3);
92+
var prefix = operation[0];
93+
value = operation[1];
9394

9495
switch(prefix)
9596
{
96-
case "eq:":
97+
case "eq":
9798
return new FilterQuery(attribute, value, FilterOperations.eq);
98-
case "lt:":
99+
case "lt":
99100
return new FilterQuery(attribute, value, FilterOperations.lt);
100-
case "gt:":
101+
case "gt":
101102
return new FilterQuery(attribute, value, FilterOperations.gt);
102-
case "le:":
103+
case "le":
103104
return new FilterQuery(attribute, value, FilterOperations.le);
104-
case "ge:":
105+
case "ge":
105106
return new FilterQuery(attribute, value, FilterOperations.ge);
107+
case "like":
108+
return new FilterQuery(attribute, value, FilterOperations.like);
106109
}
107110

108111
throw new JsonApiException("400", $"Invalid filter prefix '{prefix}'");

0 commit comments

Comments
 (0)