UNPKG

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
"use strict"; 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