ravendb
Version:
RavenDB client for Node.js
44 lines • 2.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FacetQueryCommand = void 0;
const QueryCommand_js_1 = require("./QueryCommand.js");
const RavenCommandResponsePipeline_js_1 = require("../../Http/RavenCommandResponsePipeline.js");
const ObjectUtil_js_1 = require("../../Utility/ObjectUtil.js");
const DateUtil_js_1 = require("../../Utility/DateUtil.js");
class FacetQueryCommand extends QueryCommand_js_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_js_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_js_1.ObjectUtil.transformObjectKeys(rest, {
defaultTransform: ObjectUtil_js_1.ObjectUtil.camel
});
return {
...restMapped,
indexTimestamp: DateUtil_js_1.DateUtil.utc.parse(IndexTimestamp),
lastQueryTime: DateUtil_js_1.DateUtil.utc.parse(LastQueryTime),
results: Results.map(x => ObjectUtil_js_1.ObjectUtil.transformObjectKeys(x, { defaultTransform: ObjectUtil_js_1.ObjectUtil.camel })),
includes: ObjectUtil_js_1.ObjectUtil.mapIncludesToLocalObject(json.Includes, conventions)
};
}
}
exports.FacetQueryCommand = FacetQueryCommand;
//# sourceMappingURL=FacetQueryCommand.js.map