@icon-solutions/balthazar-query-builder
Version:
This package is a query-builder used to convert data from the segment-builder into SQL-queries.
97 lines (96 loc) • 5.07 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.masterCountQueryBuilder = void 0;
const findQueryDataStructure_1 = require("./findQueryDataStructure/findQueryDataStructure");
const generateBaseQueryString_1 = require("./generateBaseQueryString/generateBaseQueryString");
const httpStatuses_1 = require("./httpStatuses/httpStatuses");
const buildQueryString_1 = require("./buildQueryString/buildQueryString");
const sortData_1 = require("./sortData/sortData");
const dataHandler_1 = require("./dataHandler/dataHandler");
const addAnd_1 = require("./addAnd/addAnd");
// QueryBuilders
const titleQueryBuilder_1 = require("./queryBuilders/titleQueryBuilder/titleQueryBuilder");
const jobFunctionQueryBuilder_1 = require("./queryBuilders/jobFunctionQueryBuilder/jobFunctionQueryBuilder");
const titleLevelQueryBuilder_1 = require("./queryBuilders/titleLevelQueryBuilder/titleLevelQueryBuilder");
const naceQueryBuilder_1 = require("./queryBuilders/naceQueryBuilder/naceQueryBuilder");
const masterCountQueryBuilder = (queryData) => {
console.log("[countQueryBuilder.ts] queryData: ", queryData);
const structure = (0, findQueryDataStructure_1.findQueryDataStructure)(queryData);
const queryArray = [];
const baseQueryString = `SELECT COUNT(DISTINCT MasterView.LinkedinURL) AS "NumberOfContacts" FROM MasterView LEFT JOIN RawTitleMatch A ON MasterView.RawTitleID = A.RawTitleID `;
if (structure.length > 0) {
const queryString = (0, generateBaseQueryString_1.generateBaseQueryString)(baseQueryString, structure);
queryArray.push(queryString);
for (var i = 0; i < structure.length; i++) {
try {
if (structure[i] === 'Title') {
const sortedTitles = (0, sortData_1.sortData)(queryData.selectedTitles);
const handledTitlesData = (0, dataHandler_1.dataHandler)(sortedTitles);
console.log("[queryBuilder.ts] dataHandler - Title: ", handledTitlesData);
(0, titleQueryBuilder_1.titleQueryBuilder)(handledTitlesData, queryArray);
(0, addAnd_1.addAnd)(i, structure.length, queryArray);
}
else if (structure[i] === 'JobFunction') {
const sortedJobFunctions = (0, sortData_1.sortData)(queryData.selectedJobFunctions);
const handledJobFunctionsData = (0, dataHandler_1.dataHandler)(sortedJobFunctions);
console.log("[queryBuilder.ts] dataHandler - JobFunction: ", handledJobFunctionsData);
(0, jobFunctionQueryBuilder_1.jobFunctionQueryBuilder)(handledJobFunctionsData, queryArray);
(0, addAnd_1.addAnd)(i, structure.length, queryArray);
}
else if (structure[i] === 'TitleLevel') {
const handledTitleLevelsData = (0, dataHandler_1.dataHandler)(queryData.selectedTitleLevels);
console.log("[queryBuilder.ts] handledTitleLevelsData: ", handledTitleLevelsData);
(0, titleLevelQueryBuilder_1.titleLevelQueryBuilder)(handledTitleLevelsData, queryArray);
(0, addAnd_1.addAnd)(i, structure.length, queryArray);
}
else if (structure[i] === 'Nace') {
const handledNaceData = (0, dataHandler_1.dataHandler)(queryData.selectedNaces);
(0, naceQueryBuilder_1.naceQueryBuilder)(handledNaceData, queryArray);
(0, addAnd_1.addAnd)(i, structure.length, queryArray);
}
;
}
catch (error) {
const errorMessage = error.toString();
const result = {
query: '',
status: httpStatuses_1.httpStatuses.bad_request,
message: errorMessage,
};
return result;
}
;
}
;
if (queryData.selectedCountry !== null) {
try {
queryArray.push(' AND ');
queryArray.push('Country = ' + (parseInt(queryData.selectedCountry.CountryID.toString())).toString());
}
catch (_a) {
/*Country not validated as number, discard to avoid SQL injection*/
}
}
/**
* Endelig query-result.
*/
const query = (0, buildQueryString_1.buildQueryString)(queryArray);
console.log(query);
const result = {
query: query,
status: httpStatuses_1.httpStatuses.ok,
message: 'OK.',
};
return result;
}
else {
const result = {
query: '',
status: httpStatuses_1.httpStatuses.bad_request,
message: 'No valid query data found.',
};
return result;
}
;
};
exports.masterCountQueryBuilder = masterCountQueryBuilder;