General purpose functions
Overview
Functions are used to build filters for selecting items from collections via REST-API, as well as functional field values that set aggregation parameters.
Function construction
Functions are defined as a JSON list, where the first element is the name of the function, and the following elements are the values of parameters, which in general case can also be functions.
["FunctionName"]
["null"]
["FunctionName",Arg]
["toYYYY","2021-12-01T13:08.25.22Z"] ["property","fieldname"]
["FunctionName",Arg1,Arg2]
["+",3,5] ["or","true","false"] ["like","abc","a*c"]
["FunctionName",Arg1,Arg2,...]
["+",3,5,6,8] ["list","a","bb","ccc","ddd"] ["join",", ","first","second","third"] ["like","abc","a*c"]
Construction of superposition of functions
A nested function can be specified as any argument. An arbitrary level of nesting is allowed.
["+",["property","x"],["property","y"]]
["toYYYY",["property","datetime"]]
["like","abc","a*c"]
["and",
["or",
["==",["property","name"],"abc"],
["contains",["property","name"],"qwe"],
["in",["property","p"],["list",3,6,9,12]],
["==",["rem",["property","value"],10],0]]
List of supported functions
-
isnull (arg) -
isnotnull (arg) -
not (arg), synonyms:! -
bool (arg) -
integer (arg) -
float (arg) -
string (arg) -
uuid (arg) -
const (arg) -
lower (arg) -
upper (arg) -
year (arg), synonyms:toYYYY,toYear -
quarter (arg) -
month (arg) -
day (arg) -
hour (arg) -
minute (arg) -
second (arg) -
weekday (arg) -
toYYYYMM (arg) -
toYYYYMMDD (arg) -
concat (…), synonyms:. -
join (…), synonyms:.. -
list (…), Example: '["list","a","b","c"]'. For postgresql it is converted to('a','b','c'). -
array (…), Example: '["list","a","b","c"]'. For postgresql it is converted toarray['a','b','c']. -
null () -
+ (…), synonyms:add -
- (arg1, arg2), synonyms:sub -
* (arg1, arg2), synonyms:mul -
/ (arg1, arg2), synonyms:div -
// (arg1, arg2), synonyms:ddiv -
% (arg1, arg2), synonyms:rem -
&& (…), synonyms:and, -
|| (…), synonyms:or, -
== (arg1, arg2), synonyms:equal,equals -
!= (arg1, arg2), synonyms:notequal,notequals,<> -
> (arg1, arg2), synonyms:greater, -
>= (arg1, arg2), synonyms:notless,greaterorequal -
< (arg1, arg2), synonyms:less -
⇐ (arg1, arg2), synonyms:notgreater,lessorequal -
in (arg1, arg2), Example: '["in",["property","role"],["list","role1","role2"]]' -
inlist (arg1, arg2), Example: '["inlist","admin",["property","roles"]]' -
hasAny (arg1, arg2), Example: '["hasAny",["property","roles"],["array","role5","role7","role9"]]' -
hasAll (arg1, arg2), Example: '["hasAll",["property","roles"],["array","role5","role7"]]' -
contains (arg1, arg2) -
like (arg1, arg2) -
interval_in_minutes (arg1, arg2) -
dateadd (arg1, arg2) -
datediff (arg1, arg2) -
between (arg1, arg2, arg3