@@ -6,33 +6,73 @@ import {
66import { ListenerOptions } from "./interfaces" ;
77import { QueueMetadata } from "./metadata" ;
88import { Dispatch } from "./queue" ;
9+ import { EmitEvent } from "@squareboat/nest-events" ;
10+ import { JobFailed , JobProcessed , JobProcessing } from "./events" ;
11+ import { ConsoleIO , Logger } from "@squareboat/nest-console" ;
912
1013export class JobRunner {
14+ private consoleIo : ConsoleIO ;
15+
1116 constructor (
1217 private options : ListenerOptions ,
1318 private connection : QueueDriver
14- ) { }
19+ ) {
20+ this . consoleIo = new ConsoleIO ( "" , { } ) ;
21+ }
1522
1623 async run ( job : DriverJob ) {
1724 const message = this . fetchMessage ( job ) ;
1825 const { data } = message ;
1926 try {
27+ this . log ( "info" , `LOG [${ message . job } ] Job Processing...` ) ;
2028 const targetJob = QueueMetadata . getJob ( message . job ) ;
2129 if ( ! targetJob || ! targetJob . target ) return ;
22-
30+ const event = new JobProcessing ( message , job ) ;
31+ event . emit ( ) ;
2332 await targetJob . target ( data ) ;
2433 await this . success ( message , job ) ;
34+ this . log ( "success" , `LOG [${ message . job } ] Job Processed` ) ;
2535 } catch ( e ) {
36+ const event = new JobFailed ( message , job ) ;
37+ event . emit ( ) ;
2638 await this . retry ( message , job ) ;
39+ const errorMessage = ( e as Error ) . message ;
40+ this . log (
41+ "error" ,
42+ `LOG [${ message . job } ] Job Failed | Error: ${ errorMessage } `
43+ ) ;
2744 }
2845 }
2946
47+ log ( level : string , msg : string ) : void {
48+ if ( ! this . options . logger ) return ;
49+ let logger = undefined ;
50+ switch ( level ) {
51+ case "info" :
52+ logger = Logger . info ;
53+ break ;
54+ case "success" :
55+ logger = Logger . success ;
56+ break ;
57+ case "error" :
58+ logger = Logger . error ;
59+ break ;
60+ case "warn" :
61+ logger = Logger . warn ;
62+ break ;
63+ }
64+
65+ logger && logger ( msg ) ;
66+ }
67+
3068 /**
3169 * Job processed succesfully method
3270 * @param message
3371 * @param job
3472 */
3573 async success ( message : InternalMessage , job : DriverJob ) : Promise < void > {
74+ const event = new JobProcessed ( message , job ) ;
75+ event . emit ( ) ;
3676 await this . removeJobFromQueue ( job ) ;
3777 }
3878
0 commit comments