@@ -55,22 +55,31 @@ export class EventBuilder {
5555 private buildTemplateDatabaseEvent (
5656 publishableEventRecord : PublishableEventRecord
5757 ) : Event | undefined {
58- if ( ! publishableEventRecord . dynamodb . NewImage ) {
58+ if (
59+ ! publishableEventRecord . dynamodb . NewImage ||
60+ ! publishableEventRecord . dynamodb . OldImage
61+ ) {
5962 // if this is a hard delete do not publish an event - we will publish events
6063 // when the status is set to deleted
6164 this . logger . debug ( {
62- description : 'No new image found ' ,
65+ description : 'Old image or new image is not present ' ,
6366 publishableEventRecord,
6467 } ) ;
6568
6669 return undefined ;
6770 }
6871
69- const dynamoRecord = unmarshall ( publishableEventRecord . dynamodb . NewImage ) ;
72+ const dynamoRecordNew = unmarshall (
73+ publishableEventRecord . dynamodb . NewImage
74+ ) ;
75+ const dynamoRecordOld = unmarshall (
76+ publishableEventRecord . dynamodb . OldImage
77+ ) ;
7078
71- const databaseTemplate = $DynamoDBTemplate . parse ( dynamoRecord ) ;
79+ const databaseTemplateNew = $DynamoDBTemplate . parse ( dynamoRecordNew ) ;
80+ const databaseTemplateOld = $DynamoDBTemplate . parse ( dynamoRecordOld ) ;
7281
73- if ( ! shouldPublish ( databaseTemplate ) ) {
82+ if ( ! shouldPublish ( databaseTemplateNew , databaseTemplateOld ) ) {
7483 this . logger . debug ( {
7584 description : 'Not publishing event' ,
7685 publishableEventRecord,
@@ -79,14 +88,24 @@ export class EventBuilder {
7988 return undefined ;
8089 }
8190
82- return $Event . parse ( {
83- ...this . buildTemplateSavedEventMetadata (
84- publishableEventRecord . eventID ,
85- databaseTemplate . templateStatus ,
86- databaseTemplate . id
87- ) ,
88- data : dynamoRecord ,
89- } ) ;
91+ try {
92+ return $Event . parse ( {
93+ ...this . buildTemplateSavedEventMetadata (
94+ publishableEventRecord . eventID ,
95+ databaseTemplateNew . templateStatus ,
96+ databaseTemplateNew . id
97+ ) ,
98+ data : dynamoRecordNew ,
99+ } ) ;
100+ } catch ( error ) {
101+ this . logger
102+ . child ( {
103+ description : 'Failed to parse outgoing event' ,
104+ publishableEventRecord,
105+ } )
106+ . error ( error ) ;
107+ throw error ;
108+ }
90109 }
91110
92111 buildEvent (
0 commit comments