arangojs
Version:
The official ArangoDB JavaScript driver.
46 lines • 1.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const collection_1 = require("./collection");
function isAqlQuery(query) {
return Boolean(query && query.query && query.bindVars);
}
exports.isAqlQuery = isAqlQuery;
function isAqlLiteral(literal) {
return Boolean(literal && typeof literal.toAQL === "function");
}
exports.isAqlLiteral = isAqlLiteral;
function aql(strings, ...args) {
const bindVars = {};
const bindVals = [];
let query = strings[0];
for (let i = 0; i < args.length; i++) {
const rawValue = args[i];
let value = rawValue;
if (isAqlLiteral(rawValue)) {
query += `${rawValue.toAQL()}${strings[i + 1]}`;
continue;
}
const index = bindVals.indexOf(rawValue);
const isKnown = index !== -1;
let name = `value${isKnown ? index : bindVals.length}`;
if (collection_1.isArangoCollection(rawValue)) {
name = `@${name}`;
value = rawValue.name;
}
if (!isKnown) {
bindVals.push(rawValue);
bindVars[name] = value;
}
query += `@${name}${strings[i + 1]}`;
}
return { query, bindVars };
}
exports.aql = aql;
(function (aql) {
aql.literal = (value) => ({
toAQL() {
return String(value);
}
});
})(aql = exports.aql || (exports.aql = {}));
//# sourceMappingURL=aql-query.js.map