feat(webhook): persist incoming provider messages

This commit is contained in:
2026-06-04 23:54:07 +08:00
parent b3865f9084
commit 5eb726b124
14 changed files with 535 additions and 84 deletions
+9 -1
View File
@@ -25,6 +25,7 @@ type TikTokWebhookHandler struct {
tiktokWebhook *tiktokchannel.WebhookHandler
pipeline *tiktokchannel.IncomingProcessor
db *gorm.DB
persister *IncomingPersister
}
// NewTikTokWebhookHandler creates a Gin-compatible TikTok webhook handler.
@@ -33,6 +34,7 @@ func NewTikTokWebhookHandler(tiktokWebhook *tiktokchannel.WebhookHandler, pipeli
tiktokWebhook: tiktokWebhook,
pipeline: pipeline,
db: db,
persister: NewIncomingPersister(db),
}
}
@@ -74,11 +76,17 @@ func (h *TikTokWebhookHandler) HandleTikTokWebhook(c *gin.Context) {
}
// Process the event via the pipeline
if err := h.pipeline.ProcessUpdate(c.Request.Context(), inbox, *event); err != nil {
incomingMsg, err := h.pipeline.ProcessUpdate(c.Request.Context(), inbox, *event)
if err != nil {
applogger.L().Errorf("TikTok webhook: process event failed for inbox %d: %v", inbox.ID, err)
c.JSON(http.StatusOK, gin.H{"status": "ignored"})
return
}
if incomingMsg != nil {
if _, persistErr := h.persister.PersistIncoming(c.Request.Context(), inbox, incomingMsg); persistErr != nil {
applogger.L().Errorf("TikTok webhook: persist event failed for inbox %d source_id=%s: %v", inbox.ID, incomingMsg.SourceID, persistErr)
}
}
c.JSON(http.StatusOK, gin.H{"status": "processed"})
}