From bdd20197b39ad41ea091a2c89273a77522a9e128 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Mon, 16 Feb 2026 19:06:45 -0500 Subject: [PATCH] Manual refinements --- webpush/store.go | 25 ++++++++++++++++++++++--- webpush/store_postgres.go | 7 ++++--- webpush/store_sqlite.go | 22 ++-------------------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/webpush/store.go b/webpush/store.go index 5dd94c93..70dfc8fa 100644 --- a/webpush/store.go +++ b/webpush/store.go @@ -1,6 +1,7 @@ package webpush import ( + "database/sql" "errors" "net/netip" "time" @@ -9,9 +10,9 @@ import ( ) const ( - SubscriptionIDPrefix = "wps_" - SubscriptionIDLength = 10 - SubscriptionEndpointLimitPerSubscriberIP = 10 + subscriptionIDPrefix = "wps_" + subscriptionIDLength = 10 + subscriptionEndpointLimitPerSubscriberIP = 10 ) var ( @@ -50,3 +51,21 @@ func (w *Subscription) Context() log.Context { "web_push_subscription_endpoint": w.Endpoint, } } + +func subscriptionsFromRows(rows *sql.Rows) ([]*Subscription, error) { + subscriptions := make([]*Subscription, 0) + for rows.Next() { + var id, endpoint, auth, p256dh, userID string + if err := rows.Scan(&id, &endpoint, &auth, &p256dh, &userID); err != nil { + return nil, err + } + subscriptions = append(subscriptions, &Subscription{ + ID: id, + Endpoint: endpoint, + Auth: auth, + P256dh: p256dh, + UserID: userID, + }) + } + return subscriptions, nil +} diff --git a/webpush/store_postgres.go b/webpush/store_postgres.go index 1889f92f..a37169b6 100644 --- a/webpush/store_postgres.go +++ b/webpush/store_postgres.go @@ -2,6 +2,7 @@ package webpush import ( "database/sql" + "errors" "net/netip" "time" @@ -133,11 +134,11 @@ func (c *PostgresStore) UpsertSubscription(endpoint string, auth, p256dh, userID // Read existing subscription ID for endpoint (or create new ID) var subscriptionID string err = tx.QueryRow(pgSelectSubscriptionIDByEndpoint, endpoint).Scan(&subscriptionID) - if err == sql.ErrNoRows { - if subscriptionCount >= SubscriptionEndpointLimitPerSubscriberIP { + if errors.Is(err, sql.ErrNoRows) { + if subscriptionCount >= subscriptionEndpointLimitPerSubscriberIP { return ErrWebPushTooManySubscriptions } - subscriptionID = util.RandomStringPrefix(SubscriptionIDPrefix, SubscriptionIDLength) + subscriptionID = util.RandomStringPrefix(subscriptionIDPrefix, subscriptionIDLength) } else if err != nil { return err } diff --git a/webpush/store_sqlite.go b/webpush/store_sqlite.go index 2483fa93..3fae75a6 100644 --- a/webpush/store_sqlite.go +++ b/webpush/store_sqlite.go @@ -166,10 +166,10 @@ func (c *SQLiteStore) UpsertSubscription(endpoint string, auth, p256dh, userID s return err } } else { - if subscriptionCount >= SubscriptionEndpointLimitPerSubscriberIP { + if subscriptionCount >= subscriptionEndpointLimitPerSubscriberIP { return ErrWebPushTooManySubscriptions } - subscriptionID = util.RandomStringPrefix(SubscriptionIDPrefix, SubscriptionIDLength) + subscriptionID = util.RandomStringPrefix(subscriptionIDPrefix, subscriptionIDLength) } if err := rows.Close(); err != nil { return err @@ -262,21 +262,3 @@ func (c *SQLiteStore) SetSubscriptionUpdatedAt(endpoint string, updatedAt int64) func (c *SQLiteStore) Close() error { return c.db.Close() } - -func subscriptionsFromRows(rows *sql.Rows) ([]*Subscription, error) { - subscriptions := make([]*Subscription, 0) - for rows.Next() { - var id, endpoint, auth, p256dh, userID string - if err := rows.Scan(&id, &endpoint, &auth, &p256dh, &userID); err != nil { - return nil, err - } - subscriptions = append(subscriptions, &Subscription{ - ID: id, - Endpoint: endpoint, - Auth: auth, - P256dh: p256dh, - UserID: userID, - }) - } - return subscriptions, nil -}