perf(backend): remove validation on recipe summary response (#718)

* count responses

* perf(backend):  remove validation on recipe summary response

use the construct() method from pydantic to reduce get time as well as optimize the SQL query for recipes

* update UI to support new categories/tags

* fix(backend): 🐛 restrict recipes by group

Co-authored-by: Hayden <hay-kot@pm.me>
This commit is contained in:
Hayden
2021-10-02 22:07:29 -08:00
committed by GitHub
parent f9829141c0
commit 568215cf70
10 changed files with 82 additions and 37 deletions

View File

@@ -81,11 +81,11 @@ class Database:
@cached_property
def categories(self) -> CategoryDataAccessModel:
return CategoryDataAccessModel(self.session, pk_id, Category, RecipeCategoryResponse)
return CategoryDataAccessModel(self.session, pk_slug, Category, RecipeCategoryResponse)
@cached_property
def tags(self) -> TagsDataAccessModel:
return TagsDataAccessModel(self.session, pk_id, Tag, RecipeTagResponse)
return TagsDataAccessModel(self.session, pk_slug, Tag, RecipeTagResponse)
# ================================================================
# Site Items

View File

@@ -1,4 +1,7 @@
from random import randint
from typing import Any
from sqlalchemy.orm import joinedload
from mealie.db.models.recipe.recipe import RecipeModel
from mealie.db.models.recipe.settings import RecipeSettings
@@ -57,3 +60,13 @@ class RecipeDataAccessModel(AccessModel[Recipe, RecipeModel]):
count=count,
override_schema=override_schema,
)
def summary(self, group_id, start=0, limit=99999) -> Any:
return (
self.session.query(RecipeModel)
.options(joinedload(RecipeModel.recipe_category), joinedload(RecipeModel.tags))
.filter(RecipeModel.group_id == group_id)
.offset(start)
.limit(limit)
.all()
)