@configurator/ravendb
Version:
RavenDB client for Node.js
43 lines • 1.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FacetQueryCommand = void 0;
const QueryCommand_1 = require("./QueryCommand");
const RavenCommandResponsePipeline_1 = require("../../Http/RavenCommandResponsePipeline");
const ObjectUtil_1 = require("../../Utility/ObjectUtil");
class FacetQueryCommand extends QueryCommand_1.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_1.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_1.ObjectUtil.transformObjectKeys(rest, {
defaultTransform: "camel"
});
return {
...restMapped,
indexTimestamp: conventions.dateUtil.parse(IndexTimestamp),
lastQueryTime: conventions.dateUtil.parse(LastQueryTime),
results: Results.map(x => ObjectUtil_1.ObjectUtil.transformObjectKeys(x, { defaultTransform: "camel" })),
includes: ObjectUtil_1.ObjectUtil.mapIncludesToLocalObject(json.Includes, conventions)
};
}
}
exports.FacetQueryCommand = FacetQueryCommand;
//# sourceMappingURL=FacetQueryCommand.js.map