UNPKG

@kwiz/node

Version:

KWIZ utilities and helpers for node applications

78 lines 3.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getOdataFilter = exports.ODataJoinOperators = exports.ODataOperators = void 0; const common_1 = require("@kwiz/common"); var ODataOperators; (function (ODataOperators) { ODataOperators["equal"] = "eq"; ODataOperators["notEqual"] = "ne"; ODataOperators["greater"] = "gt"; ODataOperators["greaterOrEqual"] = "ge"; ODataOperators["less"] = "lt"; ODataOperators["lessOrEqual"] = "le"; ODataOperators["contains"] = "in"; ODataOperators["startswith"] = "startswith"; })(ODataOperators || (exports.ODataOperators = ODataOperators = {})); var ODataJoinOperators; (function (ODataJoinOperators) { ODataJoinOperators["and"] = "and"; ODataJoinOperators["or"] = "or"; })(ODataJoinOperators || (exports.ODataJoinOperators = ODataJoinOperators = {})); function isIOdataFilter(f) { if (typeof f.property === "string") return true; return false; } function isIOdataFilterStatement(f) { if (typeof f.filters === "object" && Array.isArray(f.filters)) return true; return false; } var TableStorageKnownColumns; (function (TableStorageKnownColumns) { TableStorageKnownColumns["partitionKey"] = "PartitionKey"; TableStorageKnownColumns["rowKey"] = "RowKey"; })(TableStorageKnownColumns || (TableStorageKnownColumns = {})); function getPropNameForFilter(prop) { return TableStorageKnownColumns[prop] || prop; } function getOdataFilterStatement(filter) { let filterValue = (0, common_1.isNullOrUndefined)(filter.value) ? `null` : typeof filter.value === "string" ? `'${filter.value.replace(/'/g, "''")}'` : filter.value instanceof Date ? `'${filter.value.toISOString()}'` : `${filter.value}`; if (filter.operator === ODataOperators.startswith) return `${filter.not ? 'not ' : ''}${filter.operator}(${getPropNameForFilter(filter.property)}, ${filterValue})`; return `${filter.not ? 'not ' : ''}${getPropNameForFilter(filter.property)} ${filter.operator} ${filterValue}`; } function getOdataFilter(statement) { if ((0, common_1.isNullOrUndefined)(statement) || (0, common_1.isNullOrEmptyArray)(statement.filters)) return ""; if ((0, common_1.isNullOrEmptyString)(statement.join)) statement.join = ODataJoinOperators.or; let filterStatements = []; statement.filters.forEach(filter => { if (isIOdataFilter(filter)) { filterStatements.push(getOdataFilterStatement(filter)); } else { let subStatement = getOdataFilter(filter); if (!(0, common_1.isNullOrEmptyString)(subStatement)) filterStatements.push(subStatement); } }); if (filterStatements.length === 0) return ""; let result = ""; if (filterStatements.length === 1) result = filterStatements[0]; else if (filterStatements.length > 1) { result = `(${filterStatements.join(` ${statement.join} `)})`; } return `${statement.not ? '(not ' : ''}${result}${statement.not ? ')' : ''}`; } exports.getOdataFilter = getOdataFilter; //# sourceMappingURL=odata.js.map