ravendb
Version:
RavenDB client for Node.js
62 lines • 2.65 kB
JavaScript
import { CaseInsensitiveKeysMap } from "../../../Primitives/CaseInsensitiveKeysMap.js";
import { TimeSeriesCollectionConfiguration } from "./TimeSeriesCollectionConfiguration.js";
import { TimeUtil } from "../../../Utility/TimeUtil.js";
export class TimeSeriesConfiguration {
collections = CaseInsensitiveKeysMap.create();
policyCheckFrequencyInMs;
namedValues = CaseInsensitiveKeysMap.create();
getNames(collection, timeSeries) {
if (!this.namedValues) {
return null;
}
const timeSeriesHolder = this.namedValues.get(collection);
if (!timeSeriesHolder) {
return null;
}
const names = timeSeriesHolder.get(timeSeries);
if (!names) {
return null;
}
return names;
}
serialize() {
const collections = {};
if (this.collections) {
for (const entry of this.collections.entries()) {
collections[entry[0]] = entry[1].serialize();
}
}
const namedValues = {};
if (this.namedValues) {
for (const entry of this.namedValues.entries()) {
const collectionEntry = {};
for (const perCollectionEntry of entry[1].entries()) {
collectionEntry[perCollectionEntry[0]] = perCollectionEntry[1];
}
namedValues[entry[0]] = collectionEntry;
}
}
return {
Collections: collections,
PolicyCheckFrequency: this.policyCheckFrequencyInMs ? TimeUtil.millisToTimeSpan(this.policyCheckFrequencyInMs) : null,
NamedValues: namedValues
};
}
// using handcrafted parse function as we need to customize parsing process + call after deserialize callbacks
static parse(raw) {
const configuration = new TimeSeriesConfiguration();
for (const [key, collectionRaw] of Object.entries(raw.Collections)) {
configuration.collections.set(key, TimeSeriesCollectionConfiguration.parse(collectionRaw));
}
configuration.policyCheckFrequencyInMs = raw.PolicyCheckFrequency ? TimeUtil.timeSpanToDuration(raw.PolicyCheckFrequency) : null;
for (const [key, valuesRaw] of Object.entries(raw.NamedValues)) {
const map = CaseInsensitiveKeysMap.create();
for (const [innerKey, innerValuesRaw] of Object.entries(valuesRaw)) {
map.set(innerKey, innerValuesRaw);
}
configuration.namedValues.set(key, map);
}
return configuration;
}
}
//# sourceMappingURL=TimeSeriesConfiguration.js.map