@kwiz/node
Version:
KWIZ utilities and helpers for node applications
78 lines • 3.21 kB
JavaScript
;
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