neo4-js
Version:
Neo4j graphdb object graph mapper for javascript
62 lines (61 loc) • 2.16 kB
JavaScript
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"));
;