From fea0840ea65afb2b29abb378bd3c96697e0bbf4b Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 30 Apr 2026 16:42:23 +0300 Subject: task ia: fix media listing/filtering semantics (favorites bool, filesize filters, permission scoping) --- internal/repository/media.go | 4 ++-- internal/repository/repository.go | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'internal/repository') diff --git a/internal/repository/media.go b/internal/repository/media.go index 6c5297b..42b7f03 100644 --- a/internal/repository/media.go +++ b/internal/repository/media.go @@ -134,9 +134,9 @@ func (s *SQLite) ListMedia(ctx context.Context, filter MediaFilter) ([]model.Med like := "%" + term + "%" args = append(args, like, like) } - if filter.Favorites != nil { + if filter.Favorites { joins += ` INNER JOIN favorites f ON f.media_id = media.id AND f.user_id = ?` - args = append(args, *filter.Favorites) + args = append(args, filter.UserID) } if len(filter.Tags) > 0 { joins += ` INNER JOIN media_tags mt ON mt.media_id = media.id INNER JOIN tags t ON t.id = mt.tag_id` diff --git a/internal/repository/repository.go b/internal/repository/repository.go index 227fe79..15da984 100644 --- a/internal/repository/repository.go +++ b/internal/repository/repository.go @@ -97,9 +97,12 @@ type MediaFilter struct { Type *model.MediaType Search string Tags []string - Favorites *int64 // userID if set + Favorites bool // restrict to current user's favorites + UserID int64 MinDuration *float64 MaxDuration *float64 + MinFileSize *int64 + MaxFileSize *int64 Sort string // name, date, duration, play_count, random Limit int Offset int -- cgit v1.2.3