use nodedb_types::columnar::ColumnType;
use crate::functions::arg_types;
use crate::functions::registry::{FunctionCategory::Scalar, FunctionMeta};
use super::super::helpers::{m, no_trigger};
pub(super) fn array_elem_functions() -> Vec<FunctionMeta> {
vec![
m(
"array_length",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::Int64),
arg_types::ARRAY_1_ARGS,
),
m(
"cardinality",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::Int64),
arg_types::ARRAY_1_ARGS,
),
m(
"array_append",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::Array),
arg_types::ARRAY_ELEM_ARGS,
),
m(
"array_prepend",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::Array),
arg_types::ARRAY_PREPEND_ARGS,
),
m(
"array_remove",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::Array),
arg_types::ARRAY_ELEM_ARGS,
),
m(
"array_concat",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::Array),
arg_types::ARRAY_CAT_ARGS,
),
m(
"array_cat",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::Array),
arg_types::ARRAY_CAT_ARGS,
),
m(
"array_distinct",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::Array),
arg_types::ARRAY_1_ARGS,
),
m(
"array_contains",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::Bool),
arg_types::ARRAY_ELEM_ARGS,
),
m(
"array_position",
Scalar,
2,
2,
no_trigger(),
Some(ColumnType::Int64),
arg_types::ARRAY_ELEM_ARGS,
),
m(
"array_reverse",
Scalar,
1,
1,
no_trigger(),
Some(ColumnType::Array),
arg_types::ARRAY_1_ARGS,
),
]
}