UNPKG

flexmonster-mongo-connector

Version:

MongoDB connector for Flexmonster Pivot Table and Charts

48 lines 2.88 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DrillThroughApiRequest = void 0; const MongoResponseParser_1 = require("../../../parsers/MongoResponseParser"); const AbstractApiRequest_1 = require("./AbstractApiRequest"); const LoggingManager_1 = require("../../../logging/LoggingManager"); class DrillThroughApiRequest extends AbstractApiRequest_1.AbstractApiRequest { constructor(requestArgument) { super(requestArgument); this.parseQueryResult = (queryResult, date) => MongoResponseParser_1.MongoResponseParser.getInstance().parseDrillThroughFromCursor(queryResult, this._splitedQueries[this._curentQueryIndex]["fields"], this.CHUNK_SIZE, date); this._loggingTemplate = "drill-through"; this._clientSideLimitation = requestArgument.clientQuery["limit"] != null ? requestArgument.clientQuery["limit"] : 0; } getData(queryBuilder, queryExecutor) { return __awaiter(this, void 0, void 0, function* () { let data = []; const mongoQuery = this.buildMongoQuery(queryBuilder, this._schema); LoggingManager_1.LoggingManager.log(`Getting ${this.loggingTemplate} data`); LoggingManager_1.LoggingManager.log(`Generated pipeline query to MongoDB ${JSON.stringify(mongoQuery)}`); const startDate = new Date(); const queryResultCursor = this.executeQuery(queryExecutor, mongoQuery); return this.parseQueryResult(queryResultCursor, startDate); }); } buildMongoQuery(queryBuilder, schema) { if (queryBuilder == null) throw new Error("Illegal argument exception"); const mongoQuery = queryBuilder.buildDrillThroughPipeline(this._splitedQueries[this._curentQueryIndex], schema, this._clientSideLimitation); return mongoQuery; } toJSON(response, nextpageToken) { const jsonResponse = response; if (nextpageToken != null) jsonResponse["nextPageToken"] = nextpageToken; return jsonResponse; } } exports.DrillThroughApiRequest = DrillThroughApiRequest; //# sourceMappingURL=DrillThroughApiRequest.js.map