diff --git a/internal/handlers/media.go b/internal/handlers/media.go index 56ff196..6e08679 100644 --- a/internal/handlers/media.go +++ b/internal/handlers/media.go @@ -1424,7 +1424,12 @@ func (mh *MediaHandler) SearchMediaItems(c *echo.Context) error { languageFilter := c.QueryParam("language_filter") yearMin, _ := strconv.Atoi(c.QueryParam("year_min")) yearMax, _ := strconv.Atoi(c.QueryParam("year_max")) - hasCover := c.QueryParam("has_cover") == "true" + hasCover := false + hasCoverValid := false + if _, exists := c.QueryParams()["has_cover"]; exists { + hasCover = c.QueryParam("has_cover") == "true" + hasCoverValid = true + } // Extract sort parameter sortParam := c.QueryParam("sort") @@ -1444,7 +1449,7 @@ func (mh *MediaHandler) SearchMediaItems(c *echo.Context) error { LanguageFilter: languageFilter, YearMin: yearMin, YearMax: yearMax, - HasCover: hasCover, + HasCover: pgtype.Bool{Bool: hasCover, Valid: hasCoverValid}, Sort: sortParam, Limit: limit, Offset: offset, diff --git a/internal/router/frontend.go b/internal/router/frontend.go index 3accf2b..022fb14 100644 --- a/internal/router/frontend.go +++ b/internal/router/frontend.go @@ -212,7 +212,7 @@ func registerFrontendRoutes(cfg *Config) { LanguageFilter: "", YearMin: 0, YearMax: 0, - HasCover: false, + HasCover: pgtype.Bool{Valid: false}, Sort: "created_at DESC", Limit: limit, Offset: offset, diff --git a/internal/router/search.go b/internal/router/search.go index 2b3eb28..8602df5 100644 --- a/internal/router/search.go +++ b/internal/router/search.go @@ -67,7 +67,12 @@ func handleSearchHTML(c *echo.Context, cfg *Config) error { languageFilter := c.QueryParam("language_filter") yearMin, _ := strconv.Atoi(c.QueryParam("year_min")) yearMax, _ := strconv.Atoi(c.QueryParam("year_max")) - hasCover := c.QueryParam("has_cover") == "true" + hasCover := false + hasCoverValid := false + if _, exists := c.QueryParams()["has_cover"]; exists { + hasCover = c.QueryParam("has_cover") == "true" + hasCoverValid = true + } sortParam := c.QueryParam("sort") if sortParam == "" { sortParam = "title ASC" @@ -84,7 +89,7 @@ func handleSearchHTML(c *echo.Context, cfg *Config) error { LanguageFilter: languageFilter, YearMin: yearMin, YearMax: yearMax, - HasCover: hasCover, + HasCover: pgtype.Bool{Bool: hasCover, Valid: hasCoverValid}, Sort: sortParam, Limit: limit, Offset: offset, diff --git a/internal/services/search.go b/internal/services/search.go index 2e41fba..eea0afd 100644 --- a/internal/services/search.go +++ b/internal/services/search.go @@ -30,7 +30,7 @@ type SearchParams struct { LanguageFilter string YearMin int YearMax int - HasCover bool + HasCover pgtype.Bool SearchQuery string Sort string Limit int @@ -76,7 +76,7 @@ func (s *SearchService) SearchMediaItemsUnified(ctx context.Context, params Sear LanguageFilter: pgtype.Text{String: params.LanguageFilter, Valid: true}, YearMin: pgtype.Int4{Int32: int32(params.YearMin), Valid: true}, YearMax: pgtype.Int4{Int32: int32(params.YearMax), Valid: true}, - HasCover: pgtype.Bool{Bool: params.HasCover, Valid: true}, + HasCover: params.HasCover, SearchQuery: pgtype.Text{String: searchQuery, Valid: true}, IsExactSearch: pgtype.Bool{Bool: isExact, Valid: true}, // SearchPattern: pgtype.Text{String: searchPattern, Valid: isExact},