@configurator/ravendb
Version:
RavenDB client for Node.js
108 lines • 4.17 kB
JavaScript
"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