package handlers import ( "html/template" "mealprep/auth" "mealprep/database" "net/http" "strconv" "strings" ) // IngredientsHandler handles the ingredients page func IngredientsHandler(w http.ResponseWriter, r *http.Request) { userID := auth.GetUserID(r) // Check if there's a search query searchTags := r.URL.Query().Get("tags") var ingredients []interface{} var err error if searchTags != "" { tagNames := strings.Split(searchTags, ",") for i := range tagNames { tagNames[i] = strings.TrimSpace(tagNames[i]) } ings, err := database.SearchIngredientsByTags(userID, tagNames) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } for _, ing := range ings { ingredients = append(ingredients, ing) } } else { ings, err := database.GetIngredientsWithTags(userID) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } for _, ing := range ings { ingredients = append(ingredients, ing) } } // Get all available tags for the filter UI (only tags that are in use) allTags, err := database.GetUsedTags(userID) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } tmpl := `