Pārlūkot izejas kodu

refactor: Return WS runjob error on callback ref if available

Owen Diffey 1 gadu atpakaļ
vecāks
revīzija
a2c1bfc851
1 mainītis faili ar 20 papildinājumiem un 4 dzēšanām
  1. 20 4
      backend/src/modules/WebSocketModule.ts

+ 20 - 4
backend/src/modules/WebSocketModule.ts

@@ -129,6 +129,8 @@ export default class WebSocketModule extends BaseModule {
 			return;
 		}
 
+		let callbackRef;
+
 		try {
 			const data = JSON.parse(message.toString());
 
@@ -137,7 +139,13 @@ export default class WebSocketModule extends BaseModule {
 
 			const [moduleJob, payload, options] = data;
 			const [moduleName, jobName] = moduleJob.split(".");
-			const { CB_REF } = options ?? payload ?? {};
+
+			callbackRef = (options ?? payload ?? {}).CB_REF;
+
+			if (!callbackRef)
+				throw new Error(
+					`No callback reference provided for job ${moduleJob}`
+				);
 
 			const res = await this.jobQueue.runJob("api", "runJob", {
 				moduleName,
@@ -147,13 +155,21 @@ export default class WebSocketModule extends BaseModule {
 				socketId: socket.getSocketId()
 			});
 
-			socket.dispatch("CB_REF", CB_REF, res);
+			socket.dispatch("CB_REF", callbackRef, {
+				status: "success",
+				data: res
+			});
 		} catch (error) {
 			const message = error?.message ?? error;
 
-			this.log({ type: "error", message });
+			socket.log({ type: "error", message });
 
-			socket.dispatch("ERROR", error?.message ?? error);
+			if (callbackRef)
+				socket.dispatch("CB_REF", callbackRef, {
+					status: "error",
+					message
+				});
+			else socket.dispatch("ERROR", message);
 		}
 	}