@js-ak/db-manager
Version:
33 lines (32 loc) • 1.96 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", (element) => `${element.key} ${element.sign} ?`],
["$between", (el) => `${el.key} BETWEEN ? AND ?`],
["$in", (element) => ` ${element.key} IN (?)`],
["$like", (element) => ` ${element.key} LIKE ?`],
["$ilike", (element) => ` LOWER(${element.key}) LIKE LOWER(?)`],
["$nin", (element) => ` ${element.key} NOT IN (?)`],
["$nbetween", (el) => `${el.key} NOT BETWEEN ? AND ?`],
["$nlike", (element) => ` ${element.key} NOT LIKE ?`],
["$nilike", (element) => ` LOWER(${element.key}) NOT LIKE LOWER(?)`],
["$withoutParameters", (element) => element.key],
]);