nest-arango
Version:
ArangoDB driver module for NestJS with a built-in CLI tool for creating and running migration scripts
89 lines • 3.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.documentAQLBuilder = exports.aqlConcat = exports.aqlPart = exports.getManagerToken = exports.getConnectionToken = exports.getDocumentToken = void 0;
const aql_1 = require("arangojs/aql");
const arango_constants_1 = require("../arango.constants");
const getDocumentToken = (model, connectionName) => {
if (connectionName === undefined) {
return `${model}Document`;
}
return `${(0, exports.getConnectionToken)(connectionName)}/${model}Document`;
};
exports.getDocumentToken = getDocumentToken;
const getConnectionToken = (name) => {
return name && name !== arango_constants_1.DEFAULT_DB_CONNECTION
? `${name}Connection`
: arango_constants_1.DEFAULT_DB_CONNECTION;
};
exports.getConnectionToken = getConnectionToken;
const getManagerToken = (connectionName) => {
return `${(0, exports.getConnectionToken)(connectionName)}/Manager`;
};
exports.getManagerToken = getManagerToken;
function aqlPart(templateStrings, ...args) {
return {
templateStrings: [...templateStrings],
args: [...args],
};
}
exports.aqlPart = aqlPart;
const aqlConcat = (...parts) => {
const result = {
templateStrings: [],
args: [],
};
for (const part of parts) {
if (typeof part === 'string') {
if (!result.templateStrings.length) {
result.templateStrings.push(part);
}
else {
result.templateStrings[result.templateStrings.length - 1] += part;
}
}
else {
if (!result.templateStrings.length) {
result.templateStrings.push(...part.templateStrings);
}
else {
result.templateStrings[result.templateStrings.length - 1] +=
part.templateStrings[0];
result.templateStrings.push(...part.templateStrings.slice(1));
}
result.args.push(...part.args);
}
}
return result;
};
exports.aqlConcat = aqlConcat;
const documentAQLBuilder = (obj) => {
const objType = typeof obj;
if (objType === 'number' ||
objType === 'boolean' ||
objType === 'string' ||
(0, aql_1.isGeneratedAqlQuery)(obj) ||
obj === null) {
return aqlPart `${obj}`;
}
if (objType !== 'object') {
throw new Error('cannot serialize object');
}
const _parts = [];
if (Array.isArray(obj)) {
for (let i = 0; i < obj.length; i++) {
if (typeof obj[i] !== 'undefined') {
_parts.push(...[(0, exports.documentAQLBuilder)(obj[i]), ',']);
}
}
return (0, exports.aqlConcat)('[', ..._parts.slice(0, _parts.length - 1), ']');
}
const _keys = Object.keys(obj);
for (let i = 0; i < _keys.length; i++) {
if (typeof obj[_keys[i]] !== 'undefined') {
_parts.push(...[`"${_keys[i]}":`, (0, exports.documentAQLBuilder)(obj[_keys[i]]), ',']);
}
}
return (0, exports.aqlConcat)('{', ..._parts.slice(0, _parts.length - 1), '}');
};
exports.documentAQLBuilder = documentAQLBuilder;
//# sourceMappingURL=arango.util.js.map