From 2ccc3792556a1626e05caeefb684e0d8d7d5a10b Mon Sep 17 00:00:00 2001 From: CarterPerez-dev Date: Sat, 2 May 2026 03:42:59 -0400 Subject: [PATCH] fix(monitor/collectors/coinbase): exhaustive switches, %w double-wrap, require.ErrorIs (lint) --- .../backend/internal/collectors/coinbase/client.go | 2 +- .../backend/internal/collectors/coinbase/collector.go | 2 ++ .../backend/internal/collectors/coinbase/readloop.go | 1 + .../backend/internal/collectors/coinbase/repo_test.go | 3 +-- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/client.go b/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/client.go index 0489b1e7..20350da0 100644 --- a/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/client.go +++ b/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/client.go @@ -153,7 +153,7 @@ func (c *Conn) ReadFrame(ctx context.Context) (Frame, error) { func decodeFrame(msg []byte) (Frame, error) { var env rawEnvelope if err := json.Unmarshal(msg, &env); err != nil { - return Frame{}, fmt.Errorf("%w: %v", ErrFrameMalformed, err) + return Frame{}, fmt.Errorf("%w: %w", ErrFrameMalformed, err) } frame := Frame{ diff --git a/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/collector.go b/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/collector.go index 5682b576..396bde82 100644 --- a/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/collector.go +++ b/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/collector.go @@ -102,6 +102,8 @@ func (c *Collector) handleConn(ctx context.Context, conn *Conn) error { loopErr := ReadLoop(ctx, conn, seq, func(hctx context.Context, f Frame) error { switch f.Kind { + case FrameTypeUnknown, FrameTypeSubscriptions, FrameTypeHeartbeats: + return nil case FrameTypeTicker, FrameTypeSnapshot: ts := f.Timestamp.UTC() if ts.IsZero() { diff --git a/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/readloop.go b/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/readloop.go index a3b404cf..d69f7625 100644 --- a/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/readloop.go +++ b/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/readloop.go @@ -26,6 +26,7 @@ func ReadLoop(ctx context.Context, conn *Conn, seq *Sequencer, handler FrameHand } switch frame.Kind { + case FrameTypeUnknown, FrameTypeSubscriptions, FrameTypeHeartbeats: case FrameTypeSnapshot: seq.Reset() for _, t := range frame.Tickers { diff --git a/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/repo_test.go b/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/repo_test.go index ed26fe3b..b5fa427a 100644 --- a/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/repo_test.go +++ b/PROJECTS/advanced/monitor-the-situation-dashboard/backend/internal/collectors/coinbase/repo_test.go @@ -6,7 +6,6 @@ package coinbase_test import ( "context" "database/sql" - "errors" "testing" "time" @@ -144,5 +143,5 @@ func TestRepo_LatestTickMissingReturnsErrNoRows(t *testing.T) { ctx := context.Background() _, err := repo.LatestTick(ctx, "DOES-NOT-EXIST") - require.True(t, errors.Is(err, sql.ErrNoRows)) + require.ErrorIs(t, err, sql.ErrNoRows) }