UNPKG

@js-ak/db-manager

Version:
169 lines (168 loc) 5.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.processMappings = void 0; /** * A mapping of search operators to their corresponding processing functions. * * This `Map` associates an operator key (e.g., `$eq`, `$gt`) with a function that processes the search parameter, * modifies the `queryArray`, and populates the `values` array with the appropriate values for the SQL query. * * @property $custom - Processes a custom operator, pushing the key and value to the `queryArray` and `values` respectively. * @property $eq - Processes an equality check (`=`), handling both regular and `NULL` values. * @property $gt - Processes a greater-than comparison (`>`). * @property $gte - Processes a greater-than-or-equal comparison (`>=`). * @property $in - Processes an inclusion check (`IN`), pushing the array of values. * @property $json - Processes a JSON equality check. * @property $like - Processes a pattern match (`LIKE`). * @property $ilike - Processes a case-insensitive pattern match (`ILIKE`). * @property $lt - Processes a less-than comparison (`<`). * @property $lte - Processes a less-than-or-equal comparison (`<=`). * @property $ne - Processes a not-equal comparison (`<>`), handling both regular and `NULL` values. * @property $nin - Processes a not-inclusion check (`NOT IN`). * @property $between - Processes a range check (`BETWEEN`). * @property $nbetween - Processes a not-in-range check (`NOT BETWEEN`). * @property $nlike - Processes a not-like pattern match (`NOT LIKE`). * @property $nilike - Processes a not-ilike pattern match (`NOT ILIKE`). */ exports.processMappings = new Map([ [ "$custom", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: "$custom", sign: v.$custom.sign }); values.push(v.$custom.value); }, ], [ "$eq", (key, value, queryArray, values) => { const v = value; if (v.$eq === null) { queryArray.push({ key: `${key} IS NULL`, operator: "$withoutParameters" }); } else { queryArray.push({ key, operator: "=" }); values.push(v.$eq); } }, ], [ "$gt", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: ">" }); values.push(v.$gt); }, ], [ "$gte", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: ">=" }); values.push(v.$gte); }, ], [ "$in", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: "$in" }); values.push(v.$in); }, ], [ "$json", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: "=" }); values.push(v.$json); }, ], [ "$like", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: "$like" }); values.push(v.$like); }, ], [ "$ilike", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: "$ilike" }); values.push(v.$ilike); }, ], [ "$lt", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: "<" }); values.push(v.$lt); }, ], [ "$lte", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: "<=" }); values.push(v.$lte); }, ], [ "$ne", (key, value, queryArray, values) => { const v = value; if (v.$ne === null) { queryArray.push({ key: `${key} IS NOT NULL`, operator: "$withoutParameters" }); } else { queryArray.push({ key, operator: "<>" }); values.push(v.$ne); } }, ], [ "$nin", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: "$nin" }); values.push(v.$nin); }, ], [ "$between", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: "$between" }); values.push(v.$between[0]); values.push(v.$between[1]); }, ], [ "$nbetween", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: "$nbetween" }); values.push(v.$nbetween[0]); values.push(v.$nbetween[1]); }, ], [ "$nlike", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: "$nlike" }); values.push(v.$nlike); } ], [ "$nilike", (key, value, queryArray, values) => { const v = value; queryArray.push({ key, operator: "$nilike" }); values.push(v.$nilike); } ], ]);