UNPKG

@configurator/ravendb

Version:
108 lines 4.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GraphDocumentQueryBuilder = exports.GraphDocumentQuery = void 0; const AbstractDocumentQuery_1 = require("./AbstractDocumentQuery"); const TypeUtil_1 = require("../../Utility/TypeUtil"); const DocumentQuery_1 = require("./DocumentQuery"); const WithEdgesToken_1 = require("./Tokens/WithEdgesToken"); const Exceptions_1 = require("../../Exceptions"); const WithToken_1 = require("./Tokens/WithToken"); class GraphDocumentQuery extends AbstractDocumentQuery_1.AbstractDocumentQuery { constructor(session, graphQuery, clazz) { super(clazz, session, null, null, false, null, null); this._graphQuery(graphQuery); } usingDefaultOperator(queryOperator) { this._usingDefaultOperator(queryOperator); return this; } waitForNonStaleResults(waitTimeout) { this._waitForNonStaleResults(waitTimeout || null); return this; } addParameter(name, value) { super.addParameter(name, value); return this; } skip(count) { this._skip(count); return this; } statistics(statsCallback) { this._statistics(statsCallback); return this; } take(count) { this._take(count); return this; } noCaching() { this._noCaching(); return this; } noTracking() { this._noTracking(); return this; } timings(timings) { this._includeTimings(timings); return this; } withQuery(alias, queryRawQueryOrBuilder, documentType) { if (TypeUtil_1.TypeUtil.isString(queryRawQueryOrBuilder)) { const rawQuery = queryRawQueryOrBuilder; return this._withInternal(alias, documentType, this.session.advanced.rawQuery(rawQuery, documentType)); } else if (queryRawQueryOrBuilder instanceof DocumentQuery_1.DocumentQuery) { this.parameterPrefix = "w" + this._withTokens.length + "p"; const documentQuery = queryRawQueryOrBuilder; return this._withInternal(alias, documentQuery.getQueryType(), documentQuery); } else { const queryFactory = queryRawQueryOrBuilder; const docQuery = queryFactory(new GraphDocumentQueryBuilder(this.session, "w" + this._withTokens.length + "p")); return this._withInternal(alias, docQuery.getQueryType(), docQuery); } } withEdges(alias, edgeSelector, query) { this._withTokens.push(new WithEdgesToken_1.WithEdgesToken(alias, edgeSelector, query)); return this; } _withInternal(alias, documentType, docQuery) { if (docQuery.selectTokens && docQuery.selectTokens.length > 0) { (0, Exceptions_1.throwError)("InvalidArgumentException", "Select is not permitted in a 'with' clause in query: " + docQuery); } for (const key of Object.keys(docQuery.queryParameters)) { this._queryParameters[key] = docQuery.queryParameters[key]; } this._withTokens.push(new WithToken_1.WithToken(alias, docQuery.toString())); if (docQuery.theWaitForNonStaleResults) { this._theWaitForNonStaleResults = true; if (!this._timeout || this._timeout < docQuery.timeout) { this._timeout = docQuery.timeout; } } return this; } } exports.GraphDocumentQuery = GraphDocumentQuery; class GraphDocumentQueryBuilder { constructor(session, parameterPrefix) { this._session = session; this._parameterPrefix = parameterPrefix; } query(docTypeOrOpts) { if (TypeUtil_1.TypeUtil.isDocumentType(docTypeOrOpts)) { const query = this._session.query({ documentType: docTypeOrOpts }); query.parameterPrefix = this._parameterPrefix; return query; } const query = this._session.query(docTypeOrOpts); query.parameterPrefix = this._parameterPrefix; return query; } } exports.GraphDocumentQueryBuilder = GraphDocumentQueryBuilder; //# sourceMappingURL=GraphDocumentQuery.js.map