@@ -79,19 +79,41 @@ func (c *EventConsumer) processEventEvent(value []byte) error {
7979
8080 // Handle different operations
8181 switch rawEvent .Payload .Op {
82- case "c" : // Event creation - notify organization subscribers
83- if err := c .SubscriberService .ProcessEventCreation (& eventEvent ); err != nil {
84- log .Printf ("Error processing event creation notification from Debezium: %v" , err )
85- return err
82+ case "c" : // Skip event creation notification
83+ log .Printf ("Skipping notification for event creation: %s" , eventID )
84+
85+ case "u" : // Event update - notify only if before=PENDING and after=APPROVED
86+ // Check status transition for updates
87+ if rawEvent .Payload .Before != nil && rawEvent .Payload .After != nil {
88+ beforeStatus := rawEvent .Payload .Before .Status
89+ afterStatus := rawEvent .Payload .After .Status
90+
91+ if beforeStatus == "PENDING" && afterStatus == "APPROVED" {
92+ // This is a status change from PENDING to APPROVED - treat as creation
93+ if err := c .SubscriberService .ProcessEventCreation (& eventEvent ); err != nil {
94+ log .Printf ("Error processing event approval notification from Debezium: %v" , err )
95+ return err
96+ }
97+ log .Printf ("Successfully processed event approval (PENDING->APPROVED) notification for event %s" , eventID )
98+ } else if afterStatus == "APPROVED" {
99+ // Other changes but final status is still APPROVED - process as update
100+ if err := c .SubscriberService .ProcessEventUpdate (& eventEvent ); err != nil {
101+ log .Printf ("Error processing event update notification from Debezium: %v" , err )
102+ return err
103+ }
104+ log .Printf ("Successfully processed event update notification for approved event %s" , eventID )
105+ } else {
106+ // Status is not APPROVED - skip notification
107+ log .Printf ("Skipping notification for event %s - status is %s (not APPROVED)" , eventID , afterStatus )
108+ }
86109 }
87- log .Printf ("Successfully processed event creation notification for event %s" , eventID )
88110
89- case "u" , " d" : // Event update/delete - notify event subscribers
111+ case "d" : // Event deletion - process normally for subscribers
90112 if err := c .SubscriberService .ProcessEventUpdate (& eventEvent ); err != nil {
91- log .Printf ("Error processing event update notification from Debezium: %v" , err )
113+ log .Printf ("Error processing event deletion notification from Debezium: %v" , err )
92114 return err
93115 }
94- log .Printf ("Successfully processed event update notification for event %s" , eventID )
116+ log .Printf ("Successfully processed event deletion notification for event %s" , eventID )
95117
96118 default :
97119 log .Printf ("Unhandled operation '%s' for event %s" , rawEvent .Payload .Op , eventID )
0 commit comments