flexmonster-mongo-connector
Version:
Custom data source API implementation for MongoDB
48 lines • 2.88 kB
JavaScript
;
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