UNPKG

ravendb

Version:
174 lines 6.11 kB
import { TimeSeriesRangeResult } from "./TimeSeriesRangeResult.js"; import { TypeUtil } from "../../../Utility/TypeUtil.js"; import { StringUtil } from "../../../Utility/StringUtil.js"; import { throwError } from "../../../Exceptions/index.js"; import { DateUtil } from "../../../Utility/DateUtil.js"; import { TimeSeriesEntry } from "../../Session/TimeSeries/TimeSeriesEntry.js"; import { DocumentConventions } from "../../Conventions/DocumentConventions.js"; import { RavenCommand } from "../../../Http/RavenCommand.js"; import { StringBuilder } from "../../../Utility/StringBuilder.js"; import { TimeSeriesIncludeBuilder } from "../../Session/Loaders/TimeSeriesIncludeBuilder.js"; export class GetTimeSeriesOperation { _docId; _name; _start; _pageSize; _from; _to; _includes; _returnFullResults; constructor(docId, timeseries, from, to, start = 0, pageSize = TypeUtil.MAX_INT32, includes, returnFullResults = false) { if (StringUtil.isNullOrEmpty(docId)) { throwError("InvalidArgumentException", "DocId cannot be null or empty"); } if (StringUtil.isNullOrEmpty(timeseries)) { throwError("InvalidArgumentException", "Timeseries cannot be null or empty"); } this._docId = docId; this._start = start; this._pageSize = pageSize; this._name = timeseries; this._from = from; this._to = to; this._includes = includes; this._returnFullResults = returnFullResults; } get resultType() { return "CommandResult"; } getCommand(store, conventions, httpCache) { return new GetTimeSeriesCommand(conventions, this._docId, this._name, this._from, this._to, this._start, this._pageSize, this._includes, this._returnFullResults); } } export class GetTimeSeriesCommand extends RavenCommand { _conventions; _docId; _name; _start; _pageSize; _from; _to; _includes; _returnFullResults; constructor(conventions, docId, name, from, to, start, pageSize, includes, returnFullResults = false) { super(); this._conventions = conventions; this._docId = docId; this._name = name; this._start = start; this._pageSize = pageSize; this._from = from; this._to = to; this._includes = includes; this._returnFullResults = returnFullResults; } createRequest(node) { const pathBuilder = new StringBuilder(node.url); pathBuilder .append("/databases/") .append(node.database) .append("/timeseries") .append("?docId=") .append(this._urlEncode(this._docId)); if (this._start > 0) { pathBuilder .append("&start=") .append(this._start.toString()); } if (this._pageSize < TypeUtil.MAX_INT32) { pathBuilder .append("&pageSize=") .append(this._pageSize.toString()); } pathBuilder .append("&name=") .append(this._urlEncode(this._name)); if (this._from) { pathBuilder .append("&from=") .append(encodeURIComponent(DateUtil.utc.stringify(this._from))); } if (this._to) { pathBuilder .append("&to=") .append(encodeURIComponent(DateUtil.utc.stringify(this._to))); } if (this._includes) { GetTimeSeriesCommand.addIncludesToRequest(pathBuilder, this._includes); } if (this._returnFullResults) { pathBuilder .append("&full=true"); } const uri = pathBuilder.toString(); return { method: "GET", uri }; } static addIncludesToRequest(pathBuilder, includes) { const includeBuilder = new TimeSeriesIncludeBuilder(DocumentConventions.defaultConventions); includes(includeBuilder); if (includeBuilder.includeTimeSeriesDocument) { pathBuilder .append("&includeDocument=true"); } if (includeBuilder.includeTimeSeriesTags) { pathBuilder .append("&includeTags=true"); } } async setResponseAsync(bodyStream, fromCache) { if (!bodyStream) { return; } let body = null; const results = await this._pipeline() .parseJsonSync() .collectBody(b => body = b) .process(bodyStream); const transformedResults = GetTimeSeriesCommand.mapToLocalObject(results); this.result = reviveTimeSeriesRangeResult(transformedResults); return body; } get isReadRequest() { return true; } static mapToLocalObject(json) { const result = { to: json.To, from: json.From, includes: json.Includes, totalResults: json.TotalResults, entries: json.Entries.map(entry => ({ timestamp: entry.Timestamp, tag: entry.Tag, values: entry.Values, isRollup: entry.IsRollup, nodeValues: entry.NodeValues })) }; return result; } } export function reviveTimeSeriesRangeResult(json) { const result = new TimeSeriesRangeResult(); const { to, from, entries, ...restProps } = json; const entryMapper = (rawEntry) => { const result = new TimeSeriesEntry(); result.timestamp = DateUtil.utc.parse(rawEntry.timestamp); result.isRollup = rawEntry.isRollup; result.tag = rawEntry.tag; result.values = rawEntry.values; result.nodeValues = rawEntry.nodeValues; return result; }; const overrides = { ...restProps, to: DateUtil.utc.parse(to), from: DateUtil.utc.parse(from), entries: entries.map(entryMapper), }; return Object.assign(result, overrides); } //# sourceMappingURL=GetTimeSeriesOperation.js.map