UNPKG

@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) 4.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.masterQueryBuilder = 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 masterQueryBuilder = (queryData) => { console.log("[countQueryBuilder.ts] queryData: ", queryData); const structure = (0, findQueryDataStructure_1.findQueryDataStructure)(queryData); const queryArray = []; const baseQueryString = `SELECT * 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.masterQueryBuilder = masterQueryBuilder;