@js-ak/db-manager
Version:
63 lines (62 loc) • 2.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.operatorMappings = void 0;
/**
* A mapping of operators to their corresponding SQL expression generators.
*
* This `Map` associates a string operator key (e.g., `$custom`, `$between`) with a function that takes a field and an order number,
* and returns a tuple containing the generated SQL string and the updated order number.
*
* @property $custom - Generates a custom SQL expression using the field's key and sign.
* @property $between - Generates a SQL `BETWEEN` expression with two placeholders.
* @property $in - Generates a SQL `= ANY` expression for array inclusion.
* @property $like - Generates a SQL `LIKE` expression for pattern matching.
* @property $ilike - Generates a SQL `ILIKE` expression for case-insensitive pattern matching.
* @property $nin - Generates a SQL `NOT = ANY` expression for array exclusion.
* @property $nbetween - Generates a SQL `NOT BETWEEN` expression with two placeholders.
* @property $nlike - Generates a SQL `NOT LIKE` expression for negated pattern matching.
* @property $nilike - Generates a SQL `NOT ILIKE` expression for negated case-insensitive pattern matching.
* @property $withoutParameters - Returns the field's key as the SQL expression without any parameters.
*/
exports.operatorMappings = new Map([
[
"$custom",
(el, orderNumber) => [`${el.key} ${el.sign} $${orderNumber + 1}`, orderNumber + 1],
],
[
"$between",
(el, orderNumber) => [`${el.key} BETWEEN $${orderNumber + 1} AND $${orderNumber + 2}`, orderNumber + 2],
],
[
"$in",
(el, orderNumber) => [`${el.key} = ANY ($${orderNumber + 1})`, orderNumber + 1],
],
[
"$like",
(el, orderNumber) => [`${el.key} LIKE $${orderNumber + 1}`, orderNumber + 1],
],
[
"$ilike",
(el, orderNumber) => [`${el.key} ILIKE $${orderNumber + 1}`, orderNumber + 1],
],
[
"$nin",
(el, orderNumber) => [`NOT (${el.key} = ANY ($${orderNumber + 1}))`, orderNumber + 1],
],
[
"$nbetween",
(el, orderNumber) => [`${el.key} NOT BETWEEN $${orderNumber + 1} AND $${orderNumber + 2}`, orderNumber + 2],
],
[
"$nlike",
(el, orderNumber) => [`${el.key} NOT LIKE $${orderNumber + 1}`, orderNumber + 1],
],
[
"$nilike",
(el, orderNumber) => [`${el.key} NOT ILIKE $${orderNumber + 1}`, orderNumber + 1],
],
[
"$withoutParameters",
(el, orderNumber) => [el.key, orderNumber],
],
]);