diff --git a/internal/handlers/filters.go b/internal/handlers/filters.go index afe0516..b550727 100644 --- a/internal/handlers/filters.go +++ b/internal/handlers/filters.go @@ -103,7 +103,7 @@ func (h *FiltersHandler) GetSavedFilterByID(c *echo.Context) error { // Use service layer (includes business logic + ownership verification) filter, err := h.filtersService.GetSavedFilterByID(c.Request().Context(), userUUID, filterID) if err != nil { - if err.Error() == "filter not found or access denied" { + if errors.Is(err, services.ErrFilterNotFound) { return c.JSON(http.StatusNotFound, map[string]string{ "error": "filter not found", }) diff --git a/internal/services/filters.go b/internal/services/filters.go index 2ac8bbe..9a35465 100644 --- a/internal/services/filters.go +++ b/internal/services/filters.go @@ -4,12 +4,16 @@ import ( "bookhoard/internal/database" "context" "encoding/json" + "errors" "fmt" "github.com/google/uuid" "github.com/jackc/pgx/v5/pgtype" ) +// Custom errors for saved filters +var ErrFilterNotFound = errors.New("filter not found or access denied") + type FiltersService struct { db *database.Queries } @@ -38,7 +42,7 @@ func (s *FiltersService) GetSavedFilterByID(ctx context.Context, userID uuid.UUI UserID: pgtype.UUID{Bytes: userID, Valid: true}, }) if err != nil { - return database.SavedFilters{}, fmt.Errorf("filter not found or access denied: %w", err) + return database.SavedFilters{}, ErrFilterNotFound } return filter, nil