UNPKG

pg-query-config

Version:
264 lines (263 loc) 8.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.rc = exports.RightContain = exports.lc = exports.LeftContain = exports.json = exports.array = exports.ilike = exports.ILike = exports.like = exports.Like = exports.NotIn = exports.In = exports.lte = exports.LessEqual = exports.gte = exports.GreaterEqual = exports.lt = exports.Less = exports.gt = exports.Greater = exports.ne = exports.NotEqual = exports.eq = exports.Equal = void 0; const utils_1 = require("./utils"); /** * Basic operators * Right Operand @type number | string */ /** IN(arg1, arg2, ...) */ const In = (args) => { const fn = function (valueRefSet) { const refs = args.filter(arg => arg || arg === 0).map(arg => `$${utils_1.addValueToReferenceSet(arg, valueRefSet)}`); return refs.length ? `IN (${refs.join(',')})` : ''; }; if (args.some(arg => arg === null)) { fn.nullableCondition = 'IS NULL'; } return fn; }; exports.In = In; /** NOT IN(arg1, arg2, ...) */ const NotIn = (args) => { const fn = function (valueRefSet) { const refs = args.filter(arg => arg || arg === 0).map(arg => `$${utils_1.addValueToReferenceSet(arg, valueRefSet)}`); return refs.length ? `NOT IN (${refs.join(',')})` : ''; }; if (args.some(arg => arg === null)) { fn.nullableCondition = 'IS NOT NULL'; } return fn; }; exports.NotIn = NotIn; /** Equal(arg) or EQ(arg)*/ const Equal = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(arg, valueRefSet); return `= $${ref}`; }; }; exports.Equal = Equal; exports.eq = Equal; /** NotEqual(arg) or NE(arg)*/ const NotEqual = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(arg, valueRefSet); return `<> $${ref}`; }; }; exports.NotEqual = NotEqual; exports.ne = NotEqual; /** Greater(arg) or GT(arg) */ const Greater = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(arg, valueRefSet); return `> $${ref}`; }; }; exports.Greater = Greater; exports.gt = Greater; /** Less(arg) or LT(arg) */ const Less = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(arg, valueRefSet); return `< $${ref}`; }; }; exports.Less = Less; exports.lt = Less; /** GreaterEqual(arg) or GTE(arg) */ const GreaterEqual = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(arg, valueRefSet); return `>= $${ref}`; }; }; exports.GreaterEqual = GreaterEqual; exports.gte = GreaterEqual; /** LessEqual(arg) or LTE(arg) */ const LessEqual = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(arg, valueRefSet); return `<= $${ref}`; }; }; exports.LessEqual = LessEqual; exports.lte = LessEqual; /** Like (arg) */ const Like = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(arg, valueRefSet); return `LIKE $${ref}`; }; }; exports.Like = Like; exports.like = Like; /** ILike (arg) */ const ILike = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(arg, valueRefSet); return `ILIKE $${ref}`; }; }; exports.ILike = ILike; exports.ilike = ILike; /** * Array operators * Right Operand @type number[] | string[] */ /** * @description Does the left ARRAY value entries equal the right ARRAY values? * @example '{a,b,c}' `@>` '{b}' // true */ const ArrayEqual = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(`{${arg.join(',')}}`, valueRefSet); return `= $${ref}`; }; }; /** * @description Does the left ARRAY value entries equal the right ARRAY values? * @example '{a,b,c}' `@>` '{b}' // true */ const ArrayNotEqual = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(`{${arg.join(',')}}`, valueRefSet); return `<> $${ref}`; }; }; /** * @description Does the left ARRAY values less than the right ARRAY values? * @example ARRAY[1,2,3] < ARRAY[1,2,4]' // true */ const ArrayLess = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(`{${arg.join(',')}}`, valueRefSet); return `< $${ref}`; }; }; /** * @description Does the left ARRAY values greater than the right ARRAY values? * @example ARRAY[1,4,3] > ARRAY[1,2,4] // true */ const ArrayGreater = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(`{${arg.join(',')}}`, valueRefSet); return `> $${ref}`; }; }; /** * @description Does the left ARRAY values less than or equal the right ARRAY values? * @example ARRAY[1,2,3] <= ARRAY[1,2,3] // true */ const ArrayLessEqual = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(`{${arg.join(',')}}`, valueRefSet); return `<= $${ref}`; }; }; /** * @description Does the right ARRAY values greater than or equal the left ARRAY values? * @example ARRAY[1,4,3] >= ARRAY[1,4,3] // true */ const ArrayGreaterEqual = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(`{${arg.join(',')}}`, valueRefSet); return `>= $${ref}`; }; }; /** * @description Does the left ARRAY values contain the right ARRAY values? * @example ARRAY[1,4,3] `@>` ARRAY[3,1,3] // true */ const ArrayLeftContain = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(`{${arg.join(',')}}`, valueRefSet); return `@> $${ref}`; }; }; /** * @description Does the right ARRAY values contain the left ARRAY values? * @example ARRAY[2,2,7] `<@` ARRAY[1,7,4,2,6] // true */ const ArrayRightContain = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(`{${arg.join(',')}}`, valueRefSet); return `<@ $${ref}`; }; }; /** * @description Does the ARRAY values overlap (have elements in common)? * @example ARRAY[1,4,3] && ARRAY[2,1] // true */ const ArrayOverlap = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(`{${arg.join(',')}}`, valueRefSet); return `&& $${ref}`; }; }; /** * Json operators * Right Operand @type object | object[] */ /** * @description Are the left JSON path/value entries contained at the top level within the right JSON value? * @example '{"a":1, "b":2}'::jsonb `@>` '{"b":2}'::jsonb // true */ const JsonLeftContain = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(JSON.stringify(arg), valueRefSet); return `@> $${ref}`; }; }; /** * @description Are the left JSON path/value entries contained at the top level within the right JSON value? * @example '{"b":2}'::jsonb `<@` '{"a":1, "b":2}'::jsonb // true */ const JsonRightContain = (arg) => { return function (valueRefSet) { const ref = utils_1.addValueToReferenceSet(JSON.stringify(arg), valueRefSet); return `<@ $${ref}`; }; }; /** * Common operators */ /** * @description Are the left values contained in the right values? */ const LeftContain = (arg) => utils_1.isJson(arg) ? JsonLeftContain : ArrayLeftContain; exports.LeftContain = LeftContain; exports.lc = LeftContain; /** * @description Are the right values contained in the left values */ const RightContain = (arg) => utils_1.isJson(arg) ? JsonRightContain : ArrayRightContain; exports.RightContain = RightContain; exports.rc = RightContain; exports.array = { ArrayEqual, ae: ArrayEqual, ArrayNotEqual, ane: ArrayNotEqual, ArrayLess, al: ArrayLess, ArrayGreater, ag: ArrayGreater, ArrayLessEqual, ale: ArrayLessEqual, ArrayGreaterEqual, age: ArrayGreaterEqual, LeftContain: ArrayLeftContain, lc: ArrayLeftContain, RightContain: ArrayRightContain, rc: ArrayRightContain, ArrayOverlap, ao: ArrayOverlap }; exports.json = { LeftContain: JsonLeftContain, lc: JsonLeftContain, RightContain: JsonRightContain, rc: JsonRightContain };