UNPKG

redis-orm-node

Version:

`redis-orm` is a lightweight Object-Relational Mapping (ORM) library for Node.js.

32 lines 1.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OperatorMapper = void 0; const redis_1 = require("redis"); const utils_1 = require("../utils"); const FindOperators_1 = require("../operators/FindOperators"); const escapeSpecialChars = (srt) => srt.replace(/[`,.<>{}[\]"':;!@#$%^&*()\-+=~\s]/g, match => "\\" + match); const OperatorfieldTypeError = (operatorType, propertyType) => new Error(`Operator ${operatorType} not supported with ${propertyType.toLocaleLowerCase()} field types.`); function OperatorMapper({ type, value }, propertyName, propertyType) { switch (type) { case "equal": if (propertyType === redis_1.SchemaFieldTypes.TAG) return `@${propertyName}:{${escapeSpecialChars(value + "")}}`; else if (propertyType === redis_1.SchemaFieldTypes.NUMERIC) return `@${propertyName}:[${value} ${value}]`; else throw OperatorfieldTypeError("equal", propertyType); case "like": if (propertyType === redis_1.SchemaFieldTypes.TEXT) return `@${propertyName}:(${value})`; else if (propertyType === redis_1.SchemaFieldTypes.TAG) return `@${propertyName}:{${value}}`; else throw OperatorfieldTypeError("like", propertyType); case "not": return "-" + OperatorMapper((0, utils_1.isFindOperator)(value) ? value : (0, FindOperators_1.Equal)(value), propertyName, propertyType); default: throw new Error(`Operator ${type} not supported.`); } } exports.OperatorMapper = OperatorMapper; //# sourceMappingURL=operators.js.map