diff --git a/src/readers/queryService.ts b/src/readers/queryService.ts index 4609e9363341d77ad898702ae7ee2ab4cb955347..2743354fe190f50128992b8f62b934bdbc23a2f1 100644 --- a/src/readers/queryService.ts +++ b/src/readers/queryService.ts @@ -148,42 +148,53 @@ export const queryServiceReader = async (frontendPublisher: RabbitMqBroker, mlPu return; } - const visualQuery = activeQueryInfo.graph; //ss.queries[0].graph; - log.debug('Received query request:', message, headers, visualQuery); - if (visualQuery.nodes.length === 0) { - log.info('Empty query received'); - publisher.publishResultToFrontend({ - nodes: [], - edges: [], - nodeCounts: { updatedAt: 0 }, - metaData: { - topological: { density: 0, self_loops: 0 }, - nodes: { count: 0, labels: [], types: {} }, - edges: { count: 0, labels: [], types: {} }, - }, - }); - return; - } + let query: string; + let cypher: QueryCypher; + if (message.manualQuery != null) { + log.info('Received manual query'); + query = message.manualQuery; + cypher = { + query: query, + countQuery: 'RETURN 1;', // TODO + }; + } else { + const visualQuery = activeQueryInfo.graph; //ss.queries[0].graph; + log.debug('Received query request:', message, headers, visualQuery); + if (visualQuery.nodes.length === 0) { + log.info('Empty query received'); + publisher.publishResultToFrontend({ + nodes: [], + edges: [], + nodeCounts: { updatedAt: 0 }, + metaData: { + topological: { density: 0, self_loops: 0 }, + nodes: { count: 0, labels: [], types: {} }, + edges: { count: 0, labels: [], types: {} }, + }, + }); + return; + } - const queryBuilderSettings = activeQueryInfo.settings; //ss.queries[0].settings; - const ml = message.ml; - const convertedQuery = Query2BackendQuery(ss.id, visualQuery, queryBuilderSettings, ml); + const queryBuilderSettings = activeQueryInfo.settings; //ss.queries[0].settings; + const ml = message.ml; + const convertedQuery = Query2BackendQuery(ss.id, visualQuery, queryBuilderSettings, ml); - log.debug('translating query:', convertedQuery); - publisher.publishStatusToFrontend('Translating'); + log.debug('translating query:', convertedQuery); + publisher.publishStatusToFrontend('Translating'); - const cypher = query2Cypher(convertedQuery); - const query = cypher.query; - if (query == null) { - log.error('Error translating query:', convertedQuery); - publisher.publishErrorToFrontend('Error translating query'); - return; - } + cypher = query2Cypher(convertedQuery); + query = cypher.query; + if (query == null) { + log.error('Error translating query:', convertedQuery); + publisher.publishErrorToFrontend('Error translating query'); + return; + } - log.debug('Translated query FROM:', convertedQuery); - log.info('Translated query:', query); - log.info('Translated query:', cypher.countQuery); - publisher.publishTranslationResultToFrontend(query); + log.debug('Translated query FROM:', convertedQuery); + log.info('Translated query:', query); + log.info('Translated query:', cypher.countQuery); + publisher.publishTranslationResultToFrontend(query); + } for (let i = 0; i < ss.dbConnections.length; i++) { try { @@ -202,11 +213,11 @@ export const queryServiceReader = async (frontendPublisher: RabbitMqBroker, mlPu log.debug('Query result!'); log.info(`Query executed in ${formatTimeDifference(Date.now() - startTime)}`); - if (convertedQuery.machineLearning && convertedQuery.machineLearning.length > 0) { - for (let i = 0; i < convertedQuery.machineLearning.length; i++) { + if (message.ml && message.ml.length > 0) { + for (let i = 0; i < message.ml.length; i++) { try { - publisher.publishMachineLearningRequest(result, convertedQuery.machineLearning[i], headers); - log.debug('Published machine learning request', convertedQuery.machineLearning[i]); + publisher.publishMachineLearningRequest(result, message.ml[i], headers); + log.debug('Published machine learning request', message.ml[i]); } catch (error) { log.error('Error publishing machine learning request', error); publisher.publishErrorToFrontend('Error publishing machine learning request');