diff --git a/src/readers/queryService.ts b/src/readers/queryService.ts index 1f5fe970dfd3fc5fe1a479a4e3db5b1f9853b267..56d445566ae748af55bb11a8dfd6c8d404f28243 100644 --- a/src/readers/queryService.ts +++ b/src/readers/queryService.ts @@ -78,8 +78,6 @@ export const queryServiceReader = async (frontendPublisher: RabbitMqBroker, mlPu } log.info('Starting query reader for', type); - const publisher = new QueryPublisher(frontendPublisher, mlPublisher); - const queryServiceConsumer = await new RabbitMqBroker( rabbitMq, 'requests-exchange', @@ -90,6 +88,13 @@ export const queryServiceReader = async (frontendPublisher: RabbitMqBroker, mlPu log.info('Connected to RabbitMQ ST!'); await queryServiceConsumer.startConsuming<QueryRequest>('query-service', async (message, headers) => { + if (message.queryID == null) { + log.error('QueryID not set in message:', message.queryID); + return; + } + + const publisher = new QueryPublisher(frontendPublisher, mlPublisher, headers, message.queryID); + const startTime = Date.now(); const ss = await ums.getUserSaveState(headers.message.sessionData.userID, message.saveStateID); @@ -102,12 +107,6 @@ export const queryServiceReader = async (frontendPublisher: RabbitMqBroker, mlPu log.debug('Received query request:', message, headers, ss); log.debug('Received routing key:', headers.routingKey); - if (!headers.callID) { - log.error('QueryID not set in headers:', headers); - return; - } - - publisher.withHeaders(headers).withRoutingKey(headers.routingKey).withQueryID(headers.callID); publisher.publishStatusToFrontend('Received'); if (ss == null || ss.dbConnections == null || ss.dbConnections[0] == null || ss.dbConnections.length === 0) { diff --git a/src/utils/queryPublisher.ts b/src/utils/queryPublisher.ts index ca17e2f169c136a5f7f73df401a68fe086749eb0..d10bea719a1387114ca8c66ff08a5f42bc2b0930 100644 --- a/src/utils/queryPublisher.ts +++ b/src/utils/queryPublisher.ts @@ -6,35 +6,19 @@ import type { RabbitMqBroker } from 'ts-common/rabbitMq'; export class QueryPublisher { private frontendPublisher: RabbitMqBroker; private mlPublisher: RabbitMqBroker; - private routingKey?: string; - private headers?: BackendMessageHeader; - private queryID?: string; + private routingKey: string; + private headers: BackendMessageHeader; + private queryID: number; - constructor(frontendPublisher: RabbitMqBroker, mlPublisher: RabbitMqBroker) { + constructor(frontendPublisher: RabbitMqBroker, mlPublisher: RabbitMqBroker, headers: BackendMessageHeader, queryID: number) { this.frontendPublisher = frontendPublisher; this.mlPublisher = mlPublisher; - } - - withHeaders(headers?: BackendMessageHeader) { this.headers = headers; - return this; - } - - withRoutingKey(routingKey?: string) { - this.routingKey = routingKey; - return this; - } - - withQueryID(queryID?: string) { + this.routingKey = headers.routingKey; this.queryID = queryID; - return this; } publishStatusToFrontend(status: string) { - if (!this.headers || !this.routingKey || !this.queryID) { - throw new Error('Headers or RoutingKey or queryID not set'); - } - this.frontendPublisher.publishMessageToFrontend( { type: wsReturnKey.queryStatusUpdate, @@ -48,10 +32,6 @@ export class QueryPublisher { } publishErrorToFrontend(reason: string) { - if (!this.headers || !this.routingKey || !this.queryID) { - throw new Error('Headers or RoutingKey or queryID not set'); - } - this.frontendPublisher.publishMessageToFrontend( { type: wsReturnKey.queryStatusError, @@ -65,17 +45,13 @@ export class QueryPublisher { } publishTranslationResultToFrontend(query: string) { - if (!this.headers || !this.routingKey || !this.queryID) { - throw new Error('Headers or RoutingKey or queryID not set'); - } - this.frontendPublisher.publishMessageToFrontend( { type: wsReturnKey.queryStatusTranslationResult, callID: this.headers.callID, value: { result: query, - queryID: this.headers.callID, + queryID: this.queryID, }, status: 'success', }, @@ -85,10 +61,6 @@ export class QueryPublisher { } publishResultToFrontend(result: GraphQueryResultMetaFromBackend) { - if (!this.headers || !this.routingKey || !this.queryID) { - throw new Error('Headers or RoutingKey or queryID not set'); - } - this.frontendPublisher.publishMessageToFrontend( { type: wsReturnKey.queryStatusResult, @@ -98,7 +70,7 @@ export class QueryPublisher { type: 'nodelink', payload: result, }, - queryID: this.headers.callID, + queryID: this.queryID, }, status: 'success', }, @@ -108,10 +80,6 @@ export class QueryPublisher { } publishMachineLearningRequest(result: GraphQueryResultFromBackend, mlAttributes: MachineLearning, headers: BackendMessageHeader) { - if (!this.headers || !this.routingKey) { - throw new Error('Headers or RoutingKey or queryID not set'); - } - // FIXME: Change ML to use the same message format that the frontend uses const toMlResult = { nodes: result.nodes.map(node => ({ ...node, id: node._id })),