UNPKG

ravendb

Version:
69 lines 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LazyQueryOperation = void 0; const GetRequest_js_1 = require("../../../Commands/MultiGet/GetRequest.js"); const IndexQuery_js_1 = require("../../../Queries/IndexQuery.js"); const QueryCommand_js_1 = require("../../../Commands/QueryCommand.js"); const StreamUtil_js_1 = require("../../../../Utility/StreamUtil.js"); class LazyQueryOperation { _clazz; _session; _queryOperation; _parent; constructor(session, queryOperation, parent, clazz) { this._clazz = clazz; this._session = session; this._queryOperation = queryOperation; this._parent = parent; } createRequest() { const request = new GetRequest_js_1.GetRequest(); request.canCacheAggressively = !this._queryOperation.indexQuery.disableCaching && !this._queryOperation.indexQuery.waitForNonStaleResults; request.url = "/queries"; request.method = "POST"; request.query = "?queryHash=" + this._queryOperation.indexQuery.getQueryHash(this._session.conventions.objectMapper); request.body = (0, IndexQuery_js_1.writeIndexQuery)(this._session.conventions, this._queryOperation.indexQuery); return request; } _result; _queryResult; _requiresRetry; get result() { return this._result; } set result(result) { this._result = result; } get queryResult() { return this._queryResult; } set queryResult(queryResult) { this._queryResult = queryResult; } get requiresRetry() { return this._requiresRetry; } set requiresRetry(result) { this._requiresRetry = result; } async handleResponseAsync(response) { if (response.forceRetry) { this._result = null; this._requiresRetry = true; return; } let queryResult; if (response.result) { queryResult = await QueryCommand_js_1.QueryCommand.parseQueryResultResponseAsync((0, StreamUtil_js_1.stringToReadable)(response.result), this._session.conventions, false); } this._handleResponse(queryResult, response.elapsed); } _handleResponse(queryResult, duration) { this._queryOperation.ensureIsAcceptableAndSaveResult(queryResult, duration); this._parent.emit("afterQueryExecuted", queryResult); this.result = this._queryOperation.complete(this._clazz); this.queryResult = queryResult; } } exports.LazyQueryOperation = LazyQueryOperation; //# sourceMappingURL=LazyQueryOperation.js.map