UNPKG

@js-ak/db-manager

Version:
33 lines (32 loc) 1.96 kB
"use strict"; 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], ]);