UNPKG

neo4-js

Version:

Neo4j graphdb object graph mapper for javascript

62 lines (61 loc) 2.16 kB
"use strict"; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", { value: true }); const neo4j_driver_1 = require("neo4j-driver"); const debug = require("debug"); const d = debug("neo4js:debug"); class neo4js { constructor() { this.close = () => { d("Closing neo4js connection"); this.driver.close(); }; this.run = (cmd, params) => { let session = this.driver.session(); d("Cypher query: %s", cmd); d("Params: %O", params); return session .run(cmd, params) .then(raw => { d("Raw result: %O", raw); session.close(); let result = raw.records.map(r => r.toObject()).map(r => { let keys = Object.keys(r); let o = {}; keys.forEach(k => (o[k] = r[k] ? r[k].properties : null)); return o; }); result._stats = raw.summary.counters._stats; result._raw = raw; d("Prepared result: %O", result); return result; }) .catch(err => { session.close(); throw err; }); }; } init(options) { this.options = Object.assign({}, options); // TODO: at least some verification... const uri = `bolt://${this.options.boltUri}:${this.options.boltPort}`; const { username, password } = this.options; let auth = undefined; if (username) { auth = neo4j_driver_1.v1.auth.basic(username, password); } d("Init neo4js: %O", Object.assign({}, this.options, { uri, username, password })); if (this.driver) this.close(); this.driver = neo4j_driver_1.v1.driver(uri, auth); } } exports.neo4js = neo4js; exports.default = new neo4js(); __export(require("./Model")); __export(require("./ModelInstance")); __export(require("./Relation")); __export(require("./Decorators"));