Функции общего назначения
Обзор
Функции применяются для построения фильтров на выборку элементов из коллекций через REST-API, а также функциональных значений полей, устанавливающих параметры агрегации.
Построение функции
Функции задаются в виде JSON-списка, где первый элемент - название функции, а следующие элементы - значения параметров, которые в общем случае тоже могут являться функциями.
["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"]
Построение суперпозиции функций
В качестве любого аргумента может быть задана вложенная функция. Допускается произвольный уровень вложенности.
["+",["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]]
Список поддерживаемых функций
-
isnull (arg)
-
isnotnull (arg)
-
not (arg)
, синонимы:!
-
bool (arg)
-
integer (arg)
-
float (arg)
-
string (arg)
-
uuid (arg)
-
const (arg)
-
lower (arg)
-
upper (arg)
-
year (arg)
, синонимы:toYYYY
,toYear
-
quarter (arg)
-
month (arg)
-
day (arg)
-
hour (arg)
-
minute (arg)
-
second (arg)
-
weekday (arg)
-
toYYYYMM (arg)
-
toYYYYMMDD (arg)
-
concat (…)
, синонимы:.
-
join (…)
, синонимы:..
-
list (…)
, пример: '["list","a","b","c"]'. Для postgresql преобразуется в('a','b','c')
. -
array (…)
, пример: '["list","a","b","c"]'. Для postgresql преобразуется вarray['a','b','c']
. -
null ()
-
+ (…)
, синонимы:add
-
- (arg1, arg2)
, синонимы:sub
-
* (arg1, arg2)
, синонимы:mul
-
/ (arg1, arg2)
, синонимы:div
-
// (arg1, arg2)
, синонимы:ddiv
-
% (arg1, arg2)
, синонимы:rem
-
&& (…)
, синонимы:and
, -
|| (…)
, синонимы:or
, -
== (arg1, arg2)
, синонимы:equal
,equals
-
!= (arg1, arg2)
, синонимы:notequal
,notequals
,<>
-
> (arg1, arg2)
, синонимы:greater
, -
>= (arg1, arg2)
, синонимы:notless
,greaterorequal
-
< (arg1, arg2)
, синонимы:less
-
⇐ (arg1, arg2)
, синонимы:notgreater
,lessorequal
-
in (arg1, arg2)
, пример: '["in",["property","role"],["list","role1","role2"]]' -
inlist (arg1, arg2)
, пример: '["inlist","admin",["property","roles"]]' -
hasAny (arg1, arg2)
, пример: '["hasAny",["property","roles"],["array","role5","role7","role9"]]' -
hasAll (arg1, arg2)
, пример: '["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