From 8f739af28531c9c979524b8af74d63447ad088b9 Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Thu, 29 Jan 2026 15:51:05 -0500 Subject: [PATCH] fix: correct UUID format string issues in logging and tests - Fix scheduler.go log.Printf calls to convert pgtype.UUID to string before formatting - Fix ebook.go fmt.Printf calls to convert pgtype.UUID to string before formatting - Add missing Enabled field to rate limiter config in security test - Prevents format string errors when logging library IDs This resolves compilation errors where pgtype.UUID was being formatted with %s which expects a string, not a UUID struct. --- cmd/server/tests/security_test.go | 1 + internal/handlers/ebook.go | 5 +++-- internal/services/scheduler.go | 16 ++++++++++------ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/cmd/server/tests/security_test.go b/cmd/server/tests/security_test.go index 42a5487..ec2e997 100644 --- a/cmd/server/tests/security_test.go +++ b/cmd/server/tests/security_test.go @@ -87,6 +87,7 @@ func TestRateLimiterSecurity(t *testing.T) { e := echo.New() config := ratelimit.RateLimiterConfig{ + Enabled: true, RequestsPerMinute: 3, CleanupInterval: 1 * time.Minute, } diff --git a/internal/handlers/ebook.go b/internal/handlers/ebook.go index 5269ae4..bd4a44a 100644 --- a/internal/handlers/ebook.go +++ b/internal/handlers/ebook.go @@ -797,11 +797,12 @@ func (h *Handler) StartWatchModeForAllLibraries(ctx context.Context) error { } for _, library := range libraries { + libraryIDStr := fmt.Sprintf("%x", library.ID.Bytes) if err := h.StartWatchModeForLibrary(ctx, library.ID, library.ID); err != nil { - fmt.Printf("Warning: failed to start watch mode for library %s: %v\n", library.ID, err) + fmt.Printf("Warning: failed to start watch mode for library %s: %v\n", libraryIDStr, err) continue } - fmt.Printf("Started watch mode for library %s (%s)\n", library.Name, library.ID) + fmt.Printf("Started watch mode for library %s (%s)\n", library.Name, libraryIDStr) } return nil diff --git a/internal/services/scheduler.go b/internal/services/scheduler.go index 0013aa1..043fe36 100644 --- a/internal/services/scheduler.go +++ b/internal/services/scheduler.go @@ -109,7 +109,8 @@ func (s *Scheduler) checkAndScheduleScans() { for _, library := range libraries { settings, err := s.db.GetScanSettings(ctx, library.ID) if err != nil { - log.Printf("Error getting scan settings for library %s: %v", library.ID, err) + libraryIDStr := fmt.Sprintf("%x", library.ID.Bytes) + log.Printf("Error getting scan settings for library %s: %v", libraryIDStr, err) continue } @@ -156,20 +157,22 @@ func (s *Scheduler) scheduleLibraryScan(ctx context.Context, libraryID pgtype.UU s.timers[timerID] = timer - log.Printf("Scheduled scan for library %s every %d minutes", libraryID, frequencyMinutes) + libraryIDStr := fmt.Sprintf("%x", libraryID.Bytes) + log.Printf("Scheduled scan for library %s every %d minutes", libraryIDStr, frequencyMinutes) } func (s *Scheduler) triggerScheduledScan(ctx context.Context, libraryID pgtype.UUID, userID string) { - log.Printf("Triggering scheduled scan for library %s", libraryID) + libraryIDStr := fmt.Sprintf("%x", libraryID.Bytes) + log.Printf("Triggering scheduled scan for library %s", libraryIDStr) folders, err := s.db.GetLibraryFolders(ctx, libraryID) if err != nil { - log.Printf("Error getting folders for library %s: %v", libraryID, err) + log.Printf("Error getting folders for library %s: %v", libraryIDStr, err) return } if len(folders) == 0 { - log.Printf("No folders configured for library %s, skipping scan", libraryID) + log.Printf("No folders configured for library %s, skipping scan", libraryIDStr) return } @@ -194,7 +197,8 @@ func (s *Scheduler) triggerScheduledScan(ctx context.Context, libraryID pgtype.U if err := s.worker.EnqueueJob(job); err != nil { log.Printf("Error enqueuing scan job: %v", err) } else { - log.Printf("Enqueued scan job %s for library %s", job.ID, libraryID) + libraryIDStr := fmt.Sprintf("%x", libraryID.Bytes) + log.Printf("Enqueued scan job %s for library %s", job.ID, libraryIDStr) } }