@openhps/core
Version:
Open Hybrid Positioning System - Core component
45 lines • 1.64 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { SerializableMember, SerializableObject } from '../data/decorators';
import { DataService } from './DataService';
import { v5 as uuidv5 } from 'uuid';
export class NodeDataService extends DataService {
/**
* Find node data
* @param {string} nodeUID Node identifier
* @param {DataObject} dataObject Data object to get node data for
* @returns {Promise<any>} Promise of node data for data object
*/
findData(nodeUID, dataObject) {
return new Promise(resolve => {
this.findByUID(this.getUID(nodeUID, typeof dataObject === 'string' ? dataObject : dataObject.uid)).then(nodeData => {
resolve(nodeData.data);
}).catch(() => {
resolve(undefined);
});
});
}
insertData(nodeUID, dataObject, data) {
const uid = this.getUID(nodeUID, typeof dataObject === 'string' ? dataObject : dataObject.uid);
return this.insert(uid, new NodeData(uid, data));
}
getUID(nodeUID, dataObjectUID) {
return uuidv5(dataObjectUID + nodeUID, '97b9cc7e-19ca-4f20-8190-161d7b39e93a');
}
}
let NodeData = class NodeData {
constructor(uid, data = {}) {
this.uid = uid;
this.data = data;
}
};
__decorate([SerializableMember(), __metadata("design:type", String)], NodeData.prototype, "uid", void 0);
__decorate([SerializableMember({
serializer: data => {
return data;
},
deserializer: json => {
return json;
}
}), __metadata("design:type", Object)], NodeData.prototype, "data", void 0);
NodeData = __decorate([SerializableObject(), __metadata("design:paramtypes", [String, Object])], NodeData);
export { NodeData };