summaryrefslogtreecommitdiff
path: root/internal/repository/playback_progress.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-30 10:42:32 +0300
committerPaul Buetow <paul@buetow.org>2026-04-30 10:42:32 +0300
commit0d7063e5c91efeb219a4be5b93525b0837c8d3be (patch)
treeaba069224950e8e0d00fadd82dc4b00e4a7c4117 /internal/repository/playback_progress.go
parente971128cdc64aa81bba134faa65dc53bc2680d60 (diff)
fix(ca): translate sql.ErrNoRows to nil,nil for optional lookups
Repository methods that perform single-row queries now return (nil,nil) instead of leaking sql.ErrNoRows when a row is missing. This aligns with service-layer expectations (e.g. GetMediaDetail, ValidateSession, UpdateProgress, AssignTag, access checks) so normal missing data does not break app flows. Files changed: - internal/repository/media.go, user.go, set.go, set_permission.go, tag.go, note.go, playback_progress.go, playback_accumulator.go, session.go, share.go - internal/repository/sqlite_test.go (updated assertions) - internal/repository/sqlite_no_rows_test.go (new focused repository tests) - internal/service/no_rows_test.go (new focused service tests)
Diffstat (limited to 'internal/repository/playback_progress.go')
-rw-r--r--internal/repository/playback_progress.go5
1 files changed, 4 insertions, 1 deletions
diff --git a/internal/repository/playback_progress.go b/internal/repository/playback_progress.go
index 243c8ba..1d05dcd 100644
--- a/internal/repository/playback_progress.go
+++ b/internal/repository/playback_progress.go
@@ -2,6 +2,7 @@ package repository
import (
"context"
+ "database/sql"
"fmt"
"github.com/paul/kiss-media-player/internal/model"
@@ -26,7 +27,9 @@ func (s *SQLite) GetProgress(ctx context.Context, userID, mediaID int64) (*model
userID, mediaID,
)
var p model.PlaybackProgress
- if err := row.Scan(&p.UserID, &p.MediaID, &p.PositionSeconds, &p.UpdatedAt); err != nil {
+ if err := row.Scan(&p.UserID, &p.MediaID, &p.PositionSeconds, &p.UpdatedAt); err == sql.ErrNoRows {
+ return nil, nil
+ } else if err != nil {
return nil, err
}
return &p, nil