From 9b235a129876047517cef5046daa24f93384c1b9 Mon Sep 17 00:00:00 2001 From: Stephen Adamson Date: Sat, 11 Jul 2026 14:41:06 +0100 Subject: [PATCH] fix: add error logging to 3 non-aggregate nolint:errcheck sites (duration lookup, deposit-paid scans) --- backend/handlers/bookings/bookings.go | 12 ++++++------ backend/handlers/bookings/manage.go | 5 +++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/backend/handlers/bookings/bookings.go b/backend/handlers/bookings/bookings.go index 4b5ea35..3ad12ff 100644 --- a/backend/handlers/bookings/bookings.go +++ b/backend/handlers/bookings/bookings.go @@ -1998,8 +1998,9 @@ func CreateBookingHandler(w http.ResponseWriter, r *http.Request) { // Get payment info var preStartPaid float64 -//nolint:errcheck // zero value is acceptable fallback on scan failure - _ = db.Conn.QueryRow(r.Context(), `SELECT COALESCE(SUM(amount), 0) FROM payments WHERE booking_id = $1 AND payment_type IN ('deposit', 'full') AND status = 'completed'`, existingBooking.ID).Scan(&preStartPaid) +if err := db.Conn.QueryRow(r.Context(), `SELECT COALESCE(SUM(amount), 0) FROM payments WHERE booking_id = $1 AND payment_type IN ('deposit', 'full') AND status = 'completed'`, existingBooking.ID).Scan(&preStartPaid); err != nil { + log.Printf("Failed to scan preStartPaid for booking %s: %v", existingBooking.ID, err) + } populateDepositFields(&existingBooking, existingBooking.DepositRequired, preStartPaid) w.Header().Set("Content-Type", "application/json") @@ -3158,11 +3159,10 @@ func ConfirmBookingHandler(w http.ResponseWriter, r *http.Request) { if dav.Service != nil { var durationMinutes int -//nolint:errcheck // zero value is acceptable fallback on scan failure - _ = db.Conn.QueryRow(r.Context(), ` +if err := db.Conn.QueryRow(r.Context(), ` SELECT total_duration_minutes FROM bookings WHERE id = $1 - `, bookingID).Scan(&durationMinutes) - if durationMinutes == 0 { + `, bookingID).Scan(&durationMinutes); err != nil { + log.Printf("ALERT: failed to scan total_duration_minutes for booking %s: %v", bookingID, err) durationMinutes = 60 } _ = dav.Service.CreateEvent(1, dav.EventInput{ diff --git a/backend/handlers/bookings/manage.go b/backend/handlers/bookings/manage.go index 892ad94..062ec35 100644 --- a/backend/handlers/bookings/manage.go +++ b/backend/handlers/bookings/manage.go @@ -413,8 +413,9 @@ func AdminCreateBookingForUserHandler(w http.ResponseWriter, r *http.Request) { // Get deposit info — deposit_required already fetched above in the main booking query. var preStartPaid float64 -//nolint:errcheck // zero value is acceptable fallback on scan failure (aggregate with COALESCE) - _ = db.Conn.QueryRow(r.Context(), `SELECT COALESCE(SUM(amount), 0) FROM payments WHERE booking_id = $1 AND payment_type IN ('deposit', 'full') AND status = 'completed'`, existingID).Scan(&preStartPaid) +if err := db.Conn.QueryRow(r.Context(), `SELECT COALESCE(SUM(amount), 0) FROM payments WHERE booking_id = $1 AND payment_type IN ('deposit', 'full') AND status = 'completed'`, existingID).Scan(&preStartPaid); err != nil { + log.Printf("Failed to scan preStartPaid for booking %s: %v", existingID, err) + } populateDepositFields(&existingBooking, existingBooking.DepositRequired, preStartPaid) w.Header().Set("Content-Type", "application/json")