From b16ee343f8482351413ba440aeee1396b460342e Mon Sep 17 00:00:00 2001 From: John O'Keefe Date: Wed, 25 Mar 2026 20:38:14 -0400 Subject: [PATCH] feat: add tags filter and autocomplete endpoints - Extract tags_filter query parameter in handler - Add tags autocomplete route handler - Add tags case to field values search endpoint - Keep genre_filter for backward compatibility Provides HTTP endpoints for filtering by tags and getting autocomplete suggestions for tag values. Relates to IMPLEMENTATION_TAGS_FILTER.md Phase 3 --- internal/handlers/media.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/internal/handlers/media.go b/internal/handlers/media.go index 7518c98..cda1a45 100644 --- a/internal/handlers/media.go +++ b/internal/handlers/media.go @@ -1372,6 +1372,9 @@ func (mh *MediaHandler) SearchMediaItems(c *echo.Context) error { if genre := c.QueryParam("genre"); genre != "" { return mh.handleFieldValuesSearch(c, userID.ID, "genre", genre) } + if tags := c.QueryParam("tags"); tags != "" { + return mh.handleFieldValuesSearch(c, userID.ID, "tags", tags) + } if series := c.QueryParam("series"); series != "" { return mh.handleFieldValuesSearch(c, userID.ID, "series", series) } @@ -1411,6 +1414,7 @@ func (mh *MediaHandler) SearchMediaItems(c *echo.Context) error { authorFilter := c.QueryParam("author_filter") seriesFilter := c.QueryParam("series_filter") genreFilter := c.QueryParam("genre_filter") + tagsFilter := c.QueryParam("tags_filter") languageFilter := c.QueryParam("language_filter") yearMin, _ := strconv.Atoi(c.QueryParam("year_min")) yearMax, _ := strconv.Atoi(c.QueryParam("year_max")) @@ -1430,6 +1434,7 @@ func (mh *MediaHandler) SearchMediaItems(c *echo.Context) error { AuthorFilter: authorFilter, SeriesFilter: seriesFilter, GenreFilter: genreFilter, + TagsFilter: tagsFilter, LanguageFilter: languageFilter, YearMin: yearMin, YearMax: yearMax,