1
1
import crypto from 'crypto' ;
2
- import { Inject , Injectable } from '@nestjs/common' ;
2
+ import { Inject , Injectable , Logger } from '@nestjs/common' ;
3
3
import { trolley_webhook_log , webhook_status } from '@prisma/client' ;
4
4
import { PrismaService } from 'src/shared/global/prisma.service' ;
5
5
import { ENV_CONFIG } from 'src/config' ;
@@ -20,6 +20,8 @@ if (!trolleyWhHmac) {
20
20
*/
21
21
@Injectable ( )
22
22
export class TrolleyService {
23
+ private readonly logger = new Logger ( 'Webhooks/TolleyService' ) ;
24
+
23
25
constructor (
24
26
@Inject ( 'trolleyHandlerFns' )
25
27
private readonly handlers : Map <
@@ -118,22 +120,36 @@ export class TrolleyService {
118
120
*/
119
121
async handleEvent ( headers : Request [ 'headers' ] , payload : any ) {
120
122
const requestId = headers [ TrolleyHeaders . id ] ;
123
+ this . logger . debug ( `Received webhook event with ID: ${ requestId } ` ) ;
121
124
122
125
try {
123
126
await this . setEventState ( requestId , webhook_status . logged , payload , {
124
127
event_time : headers [ TrolleyHeaders . created ] ,
125
128
} ) ;
126
129
127
130
const { model, action, body } = payload ;
131
+ this . logger . debug ( `Processing event - ${ requestId } - ${ model } .${ action } ` ) ;
132
+
128
133
const handler = this . handlers . get ( `${ model } .${ action } ` ) ;
129
- // do nothing if there's no handler for the event (event was logged in db)
130
134
if ( ! handler ) {
135
+ this . logger . debug (
136
+ `No handler found for event - ${ requestId } - ${ model } .${ action } . Event logged but not processed.` ,
137
+ ) ;
131
138
return ;
132
139
}
133
140
141
+ this . logger . debug (
142
+ `Invoking handler for event - ${ requestId } - ${ model } .${ action } ` ,
143
+ ) ;
134
144
await handler ( body [ model ] ) ;
145
+
146
+ this . logger . debug ( `Successfully processed event with ID: ${ requestId } ` ) ;
135
147
await this . setEventState ( requestId , webhook_status . processed ) ;
136
148
} catch ( e ) {
149
+ this . logger . error (
150
+ `Error processing event with ID: ${ requestId } - ${ e . message ?? e } ` ,
151
+ e . stack ,
152
+ ) ;
137
153
await this . setEventState ( requestId , webhook_status . error , void 0 , {
138
154
error_message : e . message ?? e ,
139
155
} ) ;
0 commit comments