@openhps/core
Version:
Open Hybrid Positioning System - Core component
171 lines • 5.44 kB
JavaScript
"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