From 13933571a06bb95077625b2a0200bdfbcd4e0956 Mon Sep 17 00:00:00 2001 From: Maksym Pavlenko Date: Sun, 5 Nov 2017 13:04:36 -0800 Subject: [PATCH] Minor improvements in pledge handler --- pkg/handler/handler.go | 8 +++++++- pkg/support/patreon.go | 12 +++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/pkg/handler/handler.go b/pkg/handler/handler.go index 586db37..e374980 100644 --- a/pkg/handler/handler.go +++ b/pkg/handler/handler.go @@ -226,7 +226,13 @@ func (h handler) webhook(c *gin.Context) { } if err := h.patreon.Hook(&pledge.Data, eventName); err != nil { - log.Printf("failed to process patreon event %s (%s): %v", pledge.Data.ID, eventName, err) + log.Printf( + "failed to process patreon event %s (event: %s, user: %s): %v", + pledge.Data.ID, + eventName, + pledge.Data.Relationships.Patron.Data.ID, + err) + c.JSON(internalError(err)) return } diff --git a/pkg/support/patreon.go b/pkg/support/patreon.go index 3d1a943..324d231 100644 --- a/pkg/support/patreon.go +++ b/pkg/support/patreon.go @@ -72,7 +72,17 @@ func (h Patreon) Hook(pledge *patreon.Pledge, event string) error { case patreon.EventCreatePledge: return h.db.Insert(obj) case patreon.EventUpdatePledge: - return h.db.Update(obj) + err := h.db.Update(obj) + if err == pg.ErrNoRows { + log.Printf( + "! ignoring update for not existing pledge %s for user %s", + pledge.ID, + pledge.Relationships.Patron.Data.ID) + + return nil + } + + return err case patreon.EventDeletePledge: err := h.db.Delete(obj) if err == pg.ErrNoRows {