-
+
@@ -22,7 +22,7 @@
:md="6"
:lg="4"
:xl="3"
- v-for="item in searchResults.slice(0, 10)"
+ v-for="item in searchResults.slice(0, 24)"
:key="item.item.name"
>
(a.name > b.name ? 1 : -1));
},
setHomeCategories(state, payload) {
state.homeCategories = payload;
diff --git a/frontend/src/store/store.js b/frontend/src/store/store.js
index d4efb05f9..a4af49226 100644
--- a/frontend/src/store/store.js
+++ b/frontend/src/store/store.js
@@ -47,7 +47,6 @@ const store = new Vuex.Store({
},
setMealPlanCategories(state, payload) {
- console.log(payload);
state.mealPlanCategories = payload;
},
},
diff --git a/mealie/db/db_base.py b/mealie/db/db_base.py
index 5438d2aba..40d9144de 100644
--- a/mealie/db/db_base.py
+++ b/mealie/db/db_base.py
@@ -100,11 +100,17 @@ class BaseDocument:
match_key = self.primary_key
result = (
- session.query(self.sql_model).filter_by(**{match_key: match_value}).one()
+ session.query(self.sql_model)
+ .filter_by(**{match_key: match_value})
+ .limit(limit)
+ .all()
)
- db_entry = result.dict()
+ db_entries = [x.dict() for x in result]
- return db_entry
+ if limit == 1:
+ return db_entries[0]
+
+ return db_entries
def create(self, session: Session, document: dict) -> dict:
"""Creates a new database entry for the given SQL Alchemy Model.
diff --git a/mealie/routes/recipe/all_recipe_routes.py b/mealie/routes/recipe/all_recipe_routes.py
index 77978f1e5..b0106b660 100644
--- a/mealie/routes/recipe/all_recipe_routes.py
+++ b/mealie/routes/recipe/all_recipe_routes.py
@@ -4,6 +4,7 @@ from db.database import db
from db.db_setup import generate_session
from fastapi import APIRouter, Depends, Query
from models.recipe_models import AllRecipeRequest
+from slugify import slugify
from sqlalchemy.orm.session import Session
router = APIRouter(tags=["Query All Recipes"])
@@ -71,13 +72,23 @@ def get_all_recipes_post(
return db.recipes.get_all_limit_columns(session, body.properties, body.limit)
-@router.post("/api/category")
-async def filter_by_category(
- categories: list, session: Session = Depends(generate_session)
-):
+@router.post("/api/recipes/category")
+def filter_by_category(categories: list, session: Session = Depends(generate_session)):
""" pass a list of categories and get a list of recipes associated with those categories """
- #! This should be refactored into a single database call, but I couldn't figure it out
- in_category = [db.categories.get(session, cat) for cat in categories]
+ #! This should be refactored into a single database call, but I couldn't figure it out
+ in_category = [
+ db.categories.get(session, slugify(cat), limit=1) for cat in categories
+ ]
in_category = [cat.get("recipes") for cat in in_category]
in_category = [item for sublist in in_category for item in sublist]
return in_category
+
+
+@router.post("/api/recipes/tag")
+async def filter_by_tags(tags: list, session: Session = Depends(generate_session)):
+ """ pass a list of tags and get a list of recipes associated with those tags"""
+ #! This should be refactored into a single database call, but I couldn't figure it out
+ in_tags = [db.tags.get(session, slugify(tag), limit=1) for tag in tags]
+ in_tags = [tag.get("recipes") for tag in in_tags]
+ in_tags = [item for sublist in in_tags for item in sublist]
+ return in_tags
diff --git a/mealie/routes/recipe/recipe_crud_routes.py b/mealie/routes/recipe/recipe_crud_routes.py
index 04694e7ce..613b2d216 100644
--- a/mealie/routes/recipe/recipe_crud_routes.py
+++ b/mealie/routes/recipe/recipe_crud_routes.py
@@ -69,8 +69,10 @@ def delete_recipe(recipe_slug: str, db: Session = Depends(generate_session)):
async def get_recipe_img(recipe_slug: str):
""" Takes in a recipe slug, returns the static image """
recipe_image = read_image(recipe_slug)
-
- return FileResponse(recipe_image)
+ if recipe_image:
+ return FileResponse(recipe_image)
+ else:
+ return
@router.put("/{recipe_slug}/image")