diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-17 15:20:27 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-17 15:20:27 +0300 |
| commit | 3b24f0e1be832584d6550e8cc3e5d24329f66f90 (patch) | |
| tree | e42f03dab8725468a3a28621a4931f4ce2b8c2c5 /internal/repository/playback_progress.go | |
| parent | e56136f4fc5ac12735f332f1cde8f3748103ef1d (diff) | |
Fix in-progress media threshold
Diffstat (limited to 'internal/repository/playback_progress.go')
| -rw-r--r-- | internal/repository/playback_progress.go | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/internal/repository/playback_progress.go b/internal/repository/playback_progress.go index a2f753e..d044f92 100644 --- a/internal/repository/playback_progress.go +++ b/internal/repository/playback_progress.go @@ -76,10 +76,22 @@ func (s *SQLite) ListProgressByUser(ctx context.Context, userID int64) ([]model. return pp, rows.Err() } -// ListInProgressMedia returns unfinished, non-deleted media with saved progress for a user. +// ListInProgressMedia returns unfinished, non-deleted media with at least 60s accumulated playback. func (s *SQLite) ListInProgressMedia(ctx context.Context, userID int64, filter MediaFilter) ([]model.Media, error) { args := []any{userID} - conds := []string{`pp.user_id = ?`, `pp.finished = 0`, `media.deleted_at IS NULL`} + conds := []string{ + `pp.user_id = ?`, + `pp.finished = 0`, + `media.deleted_at IS NULL`, + `EXISTS ( + SELECT 1 + FROM playback_accumulator pa + INNER JOIN sessions s ON s.id = pa.session_id + WHERE pa.media_id = media.id + AND s.user_id = pp.user_id + AND pa.accumulated_seconds >= 60 + )`, + } query := `SELECT media.id, media.set_id, media.rel_path, media.file_name, media.abs_path, media.type, media.duration, media.codec, media.resolution, media.bitrate, media.file_size_bytes, media.width, media.height, media.exif_camera, media.exif_lens, media.exif_date, media.exif_iso, media.exif_f_number, media.exif_exposure, media.exif_focal_length, media.thumbnail_path, media.play_count, media.deleted_at, media.created_at FROM playback_progress pp INNER JOIN media ON media.id = pp.media_id` if len(filter.AllowedSetIDs) > 0 { |
