summaryrefslogtreecommitdiff
path: root/player-server/internal/repository/playback_progress.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-17 21:44:42 +0300
committerPaul Buetow <paul@buetow.org>2026-05-17 21:44:42 +0300
commit60df3397fbd14a6ad200e1fdd2530f708403ee99 (patch)
tree2d8615adad60a0d37d6d670a4dabebeea144c869 /player-server/internal/repository/playback_progress.go
parent0462f639bc1e1973d30b9ffcd358ac62fa10fb46 (diff)
Add bulk progress sync endpoint for offline mobile clients
Diffstat (limited to 'player-server/internal/repository/playback_progress.go')
-rw-r--r--player-server/internal/repository/playback_progress.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/player-server/internal/repository/playback_progress.go b/player-server/internal/repository/playback_progress.go
index d044f92..74b877c 100644
--- a/player-server/internal/repository/playback_progress.go
+++ b/player-server/internal/repository/playback_progress.go
@@ -11,7 +11,11 @@ import (
// UpsertProgress inserts or replaces playback progress.
func (s *SQLite) UpsertProgress(ctx context.Context, progress *model.PlaybackProgress) error {
- _, err := s.db.ExecContext(ctx,
+ return upsertProgress(ctx, s.db, progress)
+}
+
+func upsertProgress(ctx context.Context, db sqlExecer, progress *model.PlaybackProgress) error {
+ _, err := db.ExecContext(ctx,
`INSERT OR REPLACE INTO playback_progress (user_id, media_id, position_seconds, finished, updated_at) VALUES (?, ?, ?, ?, ?)`,
progress.UserID, progress.MediaID, progress.PositionSeconds, progress.Finished, progress.UpdatedAt,
)
@@ -23,7 +27,11 @@ func (s *SQLite) UpsertProgress(ctx context.Context, progress *model.PlaybackPro
// GetProgress retrieves playback progress for a user and media.
func (s *SQLite) GetProgress(ctx context.Context, userID, mediaID int64) (*model.PlaybackProgress, error) {
- row := s.db.QueryRowContext(ctx,
+ return getProgress(ctx, s.db, userID, mediaID)
+}
+
+func getProgress(ctx context.Context, db sqlQueryRower, userID, mediaID int64) (*model.PlaybackProgress, error) {
+ row := db.QueryRowContext(ctx,
`SELECT user_id, media_id, position_seconds, finished, updated_at FROM playback_progress WHERE user_id = ? AND media_id = ?`,
userID, mediaID,
)