mirror of
https://github.com/strapi/strapi.git
synced 2025-07-30 04:20:34 +00:00
75 lines
1.3 KiB
JavaScript
75 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
const GROUP_OPERATORS = ['$and', '$or'];
|
|
|
|
const WHERE_OPERATORS = [
|
|
'$not',
|
|
'$in',
|
|
'$notIn',
|
|
'$eq',
|
|
'$eqi',
|
|
'$ne',
|
|
'$gt',
|
|
'$gte',
|
|
'$lt',
|
|
'$lte',
|
|
'$null',
|
|
'$notNull',
|
|
'$between',
|
|
'$startsWith',
|
|
'$endsWith',
|
|
'$startsWithi',
|
|
'$endsWithi',
|
|
'$contains',
|
|
'$notContains',
|
|
'$containsi',
|
|
'$notContainsi',
|
|
];
|
|
|
|
const CAST_OPERATORS = [
|
|
'$not',
|
|
'$in',
|
|
'$notIn',
|
|
'$eq',
|
|
'$ne',
|
|
'$gt',
|
|
'$gte',
|
|
'$lt',
|
|
'$lte',
|
|
'$between',
|
|
];
|
|
|
|
const ARRAY_OPERATORS = ['$in', '$notIn', '$between'];
|
|
|
|
const OPERATORS = {
|
|
where: WHERE_OPERATORS,
|
|
cast: CAST_OPERATORS,
|
|
group: GROUP_OPERATORS,
|
|
array: ARRAY_OPERATORS,
|
|
};
|
|
|
|
// for performance, cache all operators in lowercase
|
|
const OPERATORS_LOWERCASE = Object.fromEntries(
|
|
Object.entries(OPERATORS).map(([key, values]) => [
|
|
key,
|
|
values.map((value) => value.toLowerCase()),
|
|
])
|
|
);
|
|
|
|
const isOperatorOfType = (type, key, ignoreCase = false) => {
|
|
if (ignoreCase) {
|
|
return OPERATORS_LOWERCASE[type]?.includes(key.toLowerCase()) ?? false;
|
|
}
|
|
return OPERATORS[type]?.includes(key) ?? false;
|
|
};
|
|
|
|
const isOperator = (key, ignoreCase = false) => {
|
|
return Object.keys(OPERATORS).some((type) => isOperatorOfType(type, key, ignoreCase));
|
|
};
|
|
|
|
module.exports = {
|
|
isOperator,
|
|
isOperatorOfType,
|
|
OPERATORS,
|
|
};
|