diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-17 21:44:42 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-17 21:44:42 +0300 |
| commit | 60df3397fbd14a6ad200e1fdd2530f708403ee99 (patch) | |
| tree | 2d8615adad60a0d37d6d670a4dabebeea144c869 /player-server/internal/repository/playback_progress.go | |
| parent | 0462f639bc1e1973d30b9ffcd358ac62fa10fb46 (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.go | 12 |
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, ) |
