@stoqey/sofa
Version:
Couchbase utilities
56 lines • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.escapeReservedWords = exports.parseStringSelectExpr = void 0;
var helpers_1 = require("./helpers");
var replaceList = ['ALL', 'DISTINCT', 'RAW', 'ELEMENT', 'VALUE'];
/**
* Convert select expression into an Array of selection keys
* */
var parseStringSelectExpr = function (expr) {
if (expr.indexOf(',') === -1 && expr.indexOf(' as ') === -1) {
return [expr];
}
var resultExpr = expr.replace(/[()]/g, '');
replaceList.forEach(function (value) {
resultExpr = resultExpr.replace(new RegExp("/[" + value + "]/", 'g'), '');
});
return resultExpr.split(',').map(function (v) {
return extractAsValue(v);
});
};
exports.parseStringSelectExpr = parseStringSelectExpr;
/**
* @ignore
* */
var extractAsValue = function (expr) {
var result = expr.toLowerCase().split(' as ');
if (result.length === 2) {
return result[1].trim();
}
return expr.trim();
};
/**
* @ignore
*/
var escapeReservedWords = function (field) {
if (helpers_1.n1qlReservedWords.includes(field.toUpperCase())) {
return "`" + field + "`";
}
if (field.match(/(\-)|(\.)|(\[\d+\])/g)) {
var expr = field;
expr = expr
.split('.')
.map(function (value) {
if (helpers_1.n1qlReservedWords.includes(value.toUpperCase())) {
return "`" + value + "`";
}
return value;
})
.join('.');
expr = expr.replace(/([a-z0-9]*\-[a-z0-9]*)/g, '`$&`');
return expr;
}
return field;
};
exports.escapeReservedWords = escapeReservedWords;
//# sourceMappingURL=utils.js.map