Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • graphpolaris/microservices/query-service
1 result
Show changes
Commits on Source (1)
......@@ -84,65 +84,69 @@ export const insightProcessor = async () => {
if (insight.userId == null) return;
const ss = await ums.getUserSaveState(insight.userId, insight.saveStateId);
const queries = ss.queryStates.openQueryArray;
const visualizations = ss.visualizations.openVisualizationArray;
const visualQuery = ss.queries[0].graph;
const queryBuilderSettings = ss.queries[0].settings;
const convertedQuery = Query2BackendQuery(ss.id, visualQuery, queryBuilderSettings, []);
const query = query2Cypher(convertedQuery);
if (query == null) return;
try {
const result = await queryService(ss.dbConnections[0], query);
insight.status = false;
if (insight.alarmMode === 'always') {
insight.status = true;
} else if (insight.alarmMode === 'diff') {
insight = await diffCheck(insight, ss, result);
} else if (insight.alarmMode === 'conditional' && insight.conditionsCheck && insight.conditionsCheck.length > 0) {
insight = statCheck(insight, result);
}
if (insight.userId == null) return; // fixes ts but never is the case
await ums.updateInsight(insight.userId, insight.id, insight);
if (insight.status || message.force) {
if (insight.status) log.debug('Insight passed the check');
if (message.force) log.debug('Forced insight processing');
editor.read(async () => {
const cleanUpDom = setUpDom();
let html = $generateHtmlFromNodes(editor);
cleanUpDom();
html = await populateTemplate(html, result, visualizations);
for (const recipient of insight.recipients) {
if (mail == null) {
log.warn('Mail is not configured. Insight processor will be disabled');
return;
}
if (DEBUG_EMAIL) {
log.warn('DEBUG: Would have sent mail to', recipient);
continue;
for (const queryIndex in queries) {
const visualQuery = ss.queryStates.openQueryArray[queryIndex].graph;
const queryBuilderSettings = ss.queryStates.openQueryArray[queryIndex].settings;
const convertedQuery = Query2BackendQuery(ss.id, visualQuery, queryBuilderSettings, []);
const query = query2Cypher(convertedQuery);
if (query == null) return;
try {
const result = await queryService(ss.dbConnections[0], query);
insight.status = false;
if (insight.alarmMode === 'always') {
insight.status = true;
} else if (insight.alarmMode === 'diff') {
insight = await diffCheck(insight, ss, result);
} else if (insight.alarmMode === 'conditional' && insight.conditionsCheck && insight.conditionsCheck.length > 0) {
insight = statCheck(insight, result);
}
if (insight.userId == null) return; // fixes ts but never is the case
await ums.updateInsight(insight.userId, insight.id, insight);
if (insight.status || message.force) {
if (insight.status) log.debug('Insight passed the check');
if (message.force) log.debug('Forced insight processing');
editor.read(async () => {
const cleanUpDom = setUpDom();
let html = $generateHtmlFromNodes(editor);
cleanUpDom();
html = await populateTemplate(html, result, visualizations);
for (const recipient of insight.recipients) {
if (mail == null) {
log.warn('Mail is not configured. Insight processor will be disabled');
return;
}
if (DEBUG_EMAIL) {
log.warn('DEBUG: Would have sent mail to', recipient);
continue;
}
log.debug('Sending mail to', recipient);
await mail.sendMail({
to: recipient,
from: SMTP_USER,
subject: `GraphPolaris report: ${insight.name}`,
html: html,
});
log.info('Mail sent to ', recipient);
}
log.debug('Sending mail to', recipient);
await mail.sendMail({
to: recipient,
from: SMTP_USER,
subject: `GraphPolaris report: ${insight.name}`,
html: html,
});
log.info('Mail sent to ', recipient);
}
});
} else {
log.debug('WARN: Insight did not pass the check');
});
} else {
log.debug('WARN: Insight did not pass the check');
}
} catch (err) {
log.error('Error processing insight', err);
}
} catch (err) {
log.error('Error processing insight', err);
}
});
};
......@@ -105,7 +105,30 @@ export const queryServiceReader = async (frontendPublisher: RabbitMqBroker, mlPu
return;
}
const visualQuery = ss.queries[0].graph;
let activeQuery = ss.queryStates.activeQueryId;
if (message.queryID) {
if (ss.queryStates.openQueryArray.find(q => q.id === message.queryID) == null) {
log.error('Query not found in SaveState:', message.queryID, ss.queryStates.openQueryArray);
publisher.publishErrorToFrontend('Query not found');
return;
}
activeQuery = message.queryID;
}
if (activeQuery == null || activeQuery == -1) {
log.error('No active query found in SaveState:', ss);
publisher.publishErrorToFrontend('No active query found');
return;
}
const activeQueryInfo = ss.queryStates.openQueryArray.find(q => q.id === activeQuery);
if (activeQueryInfo == null) {
log.error('Active query not found in SaveState:', ss.queryStates.activeQueryId, ss.queryStates.openQueryArray);
publisher.publishErrorToFrontend('Active query not found');
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');
......@@ -121,7 +144,7 @@ export const queryServiceReader = async (frontendPublisher: RabbitMqBroker, mlPu
return;
}
const queryBuilderSettings = ss.queries[0].settings;
const queryBuilderSettings = activeQueryInfo.settings; //ss.queries[0].settings;
const ml = message.ml;
const convertedQuery = Query2BackendQuery(ss.id, visualQuery, queryBuilderSettings, ml);
......