ravendb
Version:
RavenDB client for Node.js
40 lines • 1.8 kB
JavaScript
import { QueryCommand } from "./QueryCommand.js";
import { RavenCommandResponsePipeline } from "../../Http/RavenCommandResponsePipeline.js";
import { ObjectUtil } from "../../Utility/ObjectUtil.js";
import { DateUtil } from "../../Utility/DateUtil.js";
export class FacetQueryCommand extends QueryCommand {
async setResponseAsync(bodyStream, fromCache) {
if (!bodyStream) {
this.result = null;
return;
}
let body = null;
this.result = await FacetQueryCommand.parseQueryResultResponseAsync(bodyStream, this._session.conventions, fromCache, b => body = b);
return body;
}
static async parseQueryResultResponseAsync(bodyStream, conventions, fromCache, bodyCallback) {
const rawResult = await RavenCommandResponsePipeline.create()
.collectBody(bodyCallback)
.parseJsonSync()
.process(bodyStream);
const queryResult = FacetQueryCommand.mapToLocalObject(rawResult, conventions);
if (fromCache) {
queryResult.durationInMs = -1;
}
return queryResult;
}
static mapToLocalObject(json, conventions) {
const { Results, Includes, IndexTimestamp, LastQueryTime, ...rest } = json;
const restMapped = ObjectUtil.transformObjectKeys(rest, {
defaultTransform: ObjectUtil.camel
});
return {
...restMapped,
indexTimestamp: DateUtil.utc.parse(IndexTimestamp),
lastQueryTime: DateUtil.utc.parse(LastQueryTime),
results: Results.map(x => ObjectUtil.transformObjectKeys(x, { defaultTransform: ObjectUtil.camel })),
includes: ObjectUtil.mapIncludesToLocalObject(json.Includes, conventions)
};
}
}
//# sourceMappingURL=FacetQueryCommand.js.map