UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

171 lines 5.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DataService = void 0; const tslib_1 = require("tslib"); const decorators_1 = require("../data/decorators"); const DataServiceDriver_1 = require("./DataServiceDriver"); const Service_1 = require("./Service"); /** * DataService * * ## Usage * * ### Finding a DataService * ```typescript * import { Node, DataFrame } from '@openhps/core'; * * export class CustomNode extends Node<DataFrame> { * // Data services can be found in any function inside a node * // that is added to a model * functionInsideNode(): void { * // Get a service by its type * let service = this.model.findDataService(DataObject); * let service = this.model.findDataServiceByName("DataObject"); * } * } * ``` */ let DataService = class DataService extends Service_1.Service { constructor(dataServiceDriver) { super(); this.priority = -1; this.driver = dataServiceDriver; if (this.driver && this.driver.dataType) { this.uid = this.driver.dataType.name; } this.once('build', this._buildDriver.bind(this)); this.once('destroy', this._destroyDriver.bind(this)); } _buildDriver() { return new Promise((resolve, reject) => { if (this.driver) { this.driver.model = this.model; this.driver .emitAsync('build') .then(() => resolve()) .catch(reject); } else { resolve(); } }); } _destroyDriver() { return new Promise((resolve, reject) => { if (this.driver) { this.driver .emitAsync('destroy') .then(() => resolve()) .catch(reject); } else { resolve(); } }); } get dataType() { if (this.driver) { return this.driver.dataType; } return undefined; } get driverOptions() { if (this.driver) { return this.driver['options']; } return undefined; } /** * Set the priority of the data service * a higher number means a higher priority. * @param {number} value Priority value * @returns {DataService} data service instance */ setPriority(value) { this.priority = value; return this; } findByUID(uid) { return new Promise((resolve, reject) => { this.driver .findByUID(uid) .then((object) => { if (this.driver && this.driverOptions.keepChangelog) { resolve(typeof object === 'object' ? (0, decorators_1.createChangeLog)(object) : object); } else { resolve(object); } }) .catch(reject); }); } findOne(query, options) { return new Promise((resolve, reject) => { this.driver .findOne(query, options) .then((object) => { if (this.driver && this.driverOptions.keepChangelog) { resolve(typeof object === 'object' ? (0, decorators_1.createChangeLog)(object) : object); } else { resolve(object); } }) .catch(reject); }); } findAll(query, options) { return new Promise((resolve, reject) => { this.driver .findAll(query, options) .then((objects) => { if (this.driver && this.driverOptions.keepChangelog) { resolve(objects.map((o) => (typeof o === 'object' ? (0, decorators_1.createChangeLog)(o) : o))); } else { resolve(objects); } }) .catch(reject); }); } insert(id, object) { return new Promise((resolve, reject) => { this.driver .insert(id, object) .then((object) => { if (this.driver && this.driverOptions.keepChangelog) { resolve(typeof object === 'object' ? (0, decorators_1.createChangeLog)(object) : object); } else { resolve(object); } }) .catch(reject); }); } count(query) { return this.driver.count(query); } delete(id) { return this.driver.delete(id); } deleteAll(filter) { return this.driver.deleteAll(filter); } }; exports.DataService = DataService; tslib_1.__decorate([ (0, decorators_1.SerializableMember)(), tslib_1.__metadata("design:type", DataServiceDriver_1.DataServiceDriver) ], DataService.prototype, "driver", void 0); tslib_1.__decorate([ (0, decorators_1.SerializableMember)(), tslib_1.__metadata("design:type", Object) ], DataService.prototype, "priority", void 0); exports.DataService = DataService = tslib_1.__decorate([ (0, decorators_1.SerializableObject)(), tslib_1.__metadata("design:paramtypes", [DataServiceDriver_1.DataServiceDriver]) ], DataService); //# sourceMappingURL=DataService.js.map