From 0595068feba1160fafcd3a30a5c05d9c0c2489bb Mon Sep 17 00:00:00 2001 From: Maksym Pavlenko Date: Thu, 2 Nov 2017 17:13:01 -0700 Subject: [PATCH] Add pledge query --- pkg/models/pg.sql | 2 +- pkg/webhook/hook.go | 5 +++++ pkg/webhook/hook_test.go | 12 ++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/pkg/models/pg.sql b/pkg/models/pg.sql index f05d0cd..f6f67b0 100644 --- a/pkg/models/pg.sql +++ b/pkg/models/pg.sql @@ -2,7 +2,7 @@ BEGIN; CREATE TABLE IF NOT EXISTS pledges ( pledge_id BIGSERIAL PRIMARY KEY, - patron_id BIGINT NOT NULL , + patron_id BIGINT NOT NULL UNIQUE, created_at TIMESTAMPTZ NOT NULL, declined_since TIMESTAMPTZ NULL, amount_cents INT NOT NULL, diff --git a/pkg/webhook/hook.go b/pkg/webhook/hook.go index 4f13512..6c3e04b 100644 --- a/pkg/webhook/hook.go +++ b/pkg/webhook/hook.go @@ -79,6 +79,11 @@ func (h Handler) Handle(pledge *patreon.Pledge, event string) error { } } +func (h Handler) FindPledge(patronID string) (*models.Pledge, error) { + p := &models.Pledge{} + return p, h.db.Model(p).Where("pledge_id = ?", patronID).Limit(1).Select() +} + func NewHookHandler(db *pg.DB) *Handler { return &Handler{db: db} } diff --git a/pkg/webhook/hook_test.go b/pkg/webhook/hook_test.go index cb05e79..5c3905e 100644 --- a/pkg/webhook/hook_test.go +++ b/pkg/webhook/hook_test.go @@ -52,6 +52,18 @@ func TestDelete(t *testing.T) { require.NoError(t, err) } +func TestFindPledge(t *testing.T) { + pledge := createPledge() + hook := createHandler(t) + + err := hook.Handle(pledge, patreon.EventCreatePledge) + require.NoError(t, err) + + res, err := hook.FindPledge(pledge.ID) + require.NoError(t, err) + require.Equal(t, res.AmountCents, pledge.Attributes.AmountCents) +} + func createHandler(t *testing.T) *Handler { opts, err := pg.ParseURL("postgres://postgres:@localhost/podsync?sslmode=disable") if err != nil {