UNPKG

diffusion

Version:

Diffusion JavaScript client

98 lines (79 loc) 2.8 kB
var _implements = require('util/interface')._implements; var TimeSeries = require('../../../features/timeseries'); var RangeQueryImpl = require('features/time-series/range-query-impl'); var DataTypes = require('data/datatypes'); var Services = require('services/services'); var Emitter = require('events/emitter'); var Result = require('events/result'); var requireNonNull = require('util/require-non-null'); module.exports = _implements(TimeSeries, function TimeSeriesImpl(internal) { var locator = internal.getServiceLocator(); var rangeQuery = RangeQueryImpl.createDefault(locator.obtain(Services.RANGE_QUERY)); var appendService = locator.obtain(Services.TIME_SERIES_APPEND); var editService = locator.obtain(Services.TIME_SERIES_EDIT); this.rangeQuery = function() { return rangeQuery; }; this.edit = function(path, sequence, value, valueType) { var emitter = new Emitter(); var result = new Result(emitter); var datatype; try { if (valueType) { datatype = DataTypes.getChecked(valueType); } else { datatype = DataTypes.getByValue(value); } requireNonNull(path, "Path"); requireNonNull(value, "Value"); requireNonNull(sequence, "Sequence"); requireNonNull(datatype, "Data type"); } catch (e) { emitter.error(e); return result; } editService.send({ path : path, sequence : sequence, dataType : datatype, value : datatype.writeValue(value) }, function(err, metadata) { if (err) { emitter.error(err); } else { emitter.emit('complete', metadata); } }); return result; }; this.append = function(path, value, valueType) { var emitter = new Emitter(); var result = new Result(emitter); var datatype; try { if (valueType) { datatype = DataTypes.getChecked(valueType); } else { datatype = DataTypes.getByValue(value); } requireNonNull(path, "Path"); requireNonNull(value, "Value"); requireNonNull(datatype, "Data type"); } catch (e) { emitter.error(e); return result; } appendService.send({ path : path, value : datatype.writeValue(value), dataType : datatype }, function(err, metadata) { if (err) { emitter.error(err); } else { emitter.emit('complete', metadata); } }); return result; }; });