diffusion
Version:
Diffusion JavaScript client
129 lines (128 loc) • 5.09 kB
JavaScript
;
/**
* @module Timeseries
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.TimeSeriesImpl = void 0;
var range_query_impl_1 = require("./../../features/time-series/range-query-impl");
var Services = require("./../../services/time-series-services");
var time_series_append_request_1 = require("./../../services/timeseries/time-series-append-request");
var time_series_timestamp_append_request_1 = require("./../../services/timeseries/time-series-timestamp-append-request");
var require_non_null_1 = require("./../../util/require-non-null");
var Long = require("long");
/**
* Implementation of the time series feature
*/
var TimeSeriesImpl = /** @class */ (function () {
/**
* Create a new TimeSeriesImpl instance
*
* @param internal the internal session
*/
function TimeSeriesImpl(internal) {
this.internal = internal;
var locator = internal.getServiceLocator();
this.defaultRangeQuery = range_query_impl_1.RangeQueryImpl.createDefault(locator.obtain(Services.rangeQueryFactory(internal.getContext().DataTypes)));
this.appendService = locator.obtain(Services.TIME_SERIES_APPEND);
this.appendTimestampService = locator.obtain(Services.TIME_SERIES_TIMESTAMP_APPEND);
this.editService = locator.obtain(Services.TIME_SERIES_EDIT);
}
/**
* @inheritdoc
*/
TimeSeriesImpl.prototype.rangeQuery = function () {
return this.defaultRangeQuery;
};
/**
* @inheritdoc
*/
TimeSeriesImpl.prototype.edit = function (path, sequence, value, valueType) {
var _this = this;
// eslint-disable-next-line @typescript-eslint/naming-convention
var DataTypes = this.internal.getContext().DataTypes;
return new Promise(function (resolve, reject) {
var datatype;
var valueData;
try {
if (valueType instanceof _this.internal.getContext().AbstractDataType) {
datatype = valueType;
}
else if (valueType) {
datatype = DataTypes.getByClass(valueType);
}
else {
datatype = DataTypes.getByValue(value);
}
require_non_null_1.requireNonNull(path, 'Path');
require_non_null_1.requireNonNull(value, 'Value');
require_non_null_1.requireNonNull(sequence, 'Sequence');
datatype = require_non_null_1.requireNonNull(datatype, 'Data type');
valueData = datatype.writeValueToArray(value);
}
catch (e) {
reject(e);
return;
}
_this.editService.send({
path: path,
sequence: sequence,
dataType: datatype,
value: valueData
}, function (err, metadata) {
if (err) {
reject(err);
}
else {
resolve(metadata);
}
});
});
};
/**
* @inheritdoc
*/
TimeSeriesImpl.prototype.append = function (path, value, valueType, timestamp) {
var _this = this;
// eslint-disable-next-line @typescript-eslint/naming-convention
var DataTypes = this.internal.getContext().DataTypes;
return new Promise(function (resolve, reject) {
var datatype;
var valueData;
try {
if (valueType instanceof _this.internal.getContext().AbstractDataType) {
datatype = valueType;
}
else if (valueType) {
datatype = DataTypes.getByClass(valueType);
}
else {
datatype = DataTypes.getByValue(value);
}
require_non_null_1.requireNonNull(path, 'Path');
require_non_null_1.requireNonNull(value, 'Value');
datatype = require_non_null_1.requireNonNull(datatype, 'Data type');
valueData = datatype.writeValueToArray(value);
}
catch (e) {
reject(e);
return;
}
var responseCallback = function (err, metadata) {
if (err) {
reject(err);
}
else {
resolve(metadata);
}
};
if (timestamp === undefined) {
_this.appendService.send(new time_series_append_request_1.TimeSeriesAppendRequest(path, datatype, valueData), responseCallback);
}
else {
_this.appendTimestampService.send(new time_series_timestamp_append_request_1.TimeSeriesTimestampAppendRequest(path, datatype, valueData, typeof timestamp === 'number' ? Long.fromNumber(timestamp) : timestamp), responseCallback);
}
});
};
return TimeSeriesImpl;
}());
exports.TimeSeriesImpl = TimeSeriesImpl;