UNPKG

ogm

Version:
237 lines (199 loc) 7.2 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _bind = Function.prototype.bind; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _2 = require('./'); var V = (function () { function V(obj) { _classCallCheck(this, V); if (obj && typeof obj === 'object') { this.object = obj; } } _createClass(V, [{ key: 'select', value: function select(s) { if (!this['@rid']) { throw new Error('Cannot query from unsaved vertex!'); } return _2.session.db.select(s).from(this['@rid']); } }, { key: 'selectNeighbour', value: function selectNeighbour(dir, cl) { var exp = ''; //TODO: handlig object criterias for (var _len = arguments.length, criterions = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { criterions[_key - 2] = arguments[_key]; } criterions.forEach(function (criteria) { exp += '[' + criteria + ']'; }); var clName = typeof cl === 'string' ? cl : cl._OGM_CLASS_NAME; return this.select('expand(' + dir + '(' + clName + ')' + exp + ')'); } }, { key: 'outV', value: function outV(edge) { for (var _len2 = arguments.length, criterions = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { criterions[_key2 - 1] = arguments[_key2]; } return this.selectNeighbour.apply(this, ['out', edge].concat(criterions)); } }, { key: 'inV', value: function inV(edge) { for (var _len3 = arguments.length, criterions = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { criterions[_key3 - 1] = arguments[_key3]; } return this.selectNeighbour.apply(this, ['in', edge].concat(criterions)); } }, { key: 'bothV', value: function bothV(edge) { for (var _len4 = arguments.length, criterions = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { criterions[_key4 - 1] = arguments[_key4]; } return this.selectNeighbour.apply(this, ['both', edge].concat(criterions)); } }, { key: 'outE', value: function outE(edge) { for (var _len5 = arguments.length, criterions = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) { criterions[_key5 - 1] = arguments[_key5]; } return this.selectNeighbour.apply(this, ['outE', edge].concat(criterions)); } }, { key: 'inE', value: function inE(edge) { for (var _len6 = arguments.length, criterions = Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) { criterions[_key6 - 1] = arguments[_key6]; } return this.selectNeighbour.apply(this, ['inE', edge].concat(criterions)); } }, { key: 'bothE', value: function bothE(edge) { for (var _len7 = arguments.length, criterions = Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) { criterions[_key7 - 1] = arguments[_key7]; } return this.selectNeighbour.apply(this, ['bothE', edge].concat(criterions)); } }, { key: 'save', value: function save() { var obj; return regeneratorRuntime.async(function save$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: if (!this['@rid']) { context$2$0.next = 4; break; } return context$2$0.abrupt('return', _2.session.db.update(this['@rid']).set(this.object).scalar()); case 4: context$2$0.next = 6; return regeneratorRuntime.awrap(_2.session.db.insert().into(this._OGM_CLASS_NAME).set(this.object).one()); case 6: obj = context$2$0.sent; this.object = obj; return context$2$0.abrupt('return', obj); case 9: case 'end': return context$2$0.stop(); } }, null, this); } }, { key: 'delete', value: function _delete() { return this.constructor['delete'](this['@rid']); } }, { key: 'object', get: function get() { var _this = this; var r = {}; this._OGM_PROPS.forEach((function (prop) { r[prop.name] = _this[prop.name]; }).bind(this)); return r; }, set: function set(value) { var _this2 = this; Object.keys(value).forEach((function (key) { _this2[key] = value[key]; }).bind(this)); } }], [{ key: 'sync', value: function sync() { var Class; return regeneratorRuntime.async(function sync$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: context$2$0.next = 2; return regeneratorRuntime.awrap(_2.session.db['class'].create(this._OGM_CLASS_NAME, this.__proto__._OGM_CLASS_NAME)); case 2: Class = context$2$0.sent; return context$2$0.abrupt('return', Class); case 4: case 'end': return context$2$0.stop(); } }, null, this); } }, { key: 'get', value: function get(rid) { return _2.session.db.record.get(rid); } }, { key: 'select', value: function select(s) { return _2.session.db.select(s).from(this._OGM_CLASS_NAME); } }, { key: 'query', value: function query(q) { var r = _2.session.db.select().from(this._OGM_CLASS_NAME); if (q && !_lodash2['default'].isEmpty(q)) { r = r.where(q); } return r; } }, { key: 'create', value: function create() { for (var _len8 = arguments.length, args = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { args[_key8] = arguments[_key8]; } var vertex = new (_bind.apply(this, [null].concat(args)))(); return vertex.save(); } }, { key: 'delete', value: function _delete(q) { if ((0, _2.isRid)(q + '')) { return _2.session.db.record['delete'](q); } else { var r = _2.session.db['delete']().from(this._OGM_CLASS_NAME); if (q) { r = r.where(q); } return r; } } }]); return V; })(); exports['default'] = V; module.exports = exports['default']; //TODO: Checking for class existence and syncing properties