feat: Simplify Default Layout Logic and Add Household.name To Cookbooks API (#6243)

This commit is contained in:
Michael Genson
2025-09-25 18:01:10 -05:00
committed by GitHub
parent 79367872ac
commit d29de8e679
9 changed files with 33 additions and 41 deletions

View File

@@ -1,8 +1,9 @@
# This file is auto-generated by gen_schema_exports.py
from .cookbook import CookBookPagination, CreateCookBook, ReadCookBook, SaveCookBook, UpdateCookBook
from .cookbook import CookbookHousehold, CookBookPagination, CreateCookBook, ReadCookBook, SaveCookBook, UpdateCookBook
__all__ = [
"CookBookPagination",
"CookbookHousehold",
"CreateCookBook",
"ReadCookBook",
"SaveCookBook",

View File

@@ -3,8 +3,11 @@ from typing import Annotated
import sqlalchemy as sa
from pydantic import UUID4, ConfigDict, Field, ValidationInfo, field_validator
from slugify import slugify
from sqlalchemy.orm import joinedload
from sqlalchemy.orm.interfaces import LoaderOption
from mealie.core.root_logger import get_logger
from mealie.db.models.household.cookbook import CookBook
from mealie.db.models.recipe import RecipeModel
from mealie.schema._mealie import MealieModel
from mealie.schema.response.pagination import PaginationBase
@@ -13,6 +16,12 @@ from mealie.schema.response.query_filter import QueryFilterBuilder, QueryFilterJ
logger = get_logger()
class CookbookHousehold(MealieModel):
id: UUID4
name: str
model_config = ConfigDict(from_attributes=True)
class CreateCookBook(MealieModel):
name: str
description: str = ""
@@ -62,6 +71,7 @@ class UpdateCookBook(SaveCookBook):
class ReadCookBook(UpdateCookBook):
query_filter: Annotated[QueryFilterJSON, Field(validate_default=True)] = None # type: ignore
household: CookbookHousehold | None = None
model_config = ConfigDict(from_attributes=True)
@@ -80,6 +90,10 @@ class ReadCookBook(UpdateCookBook):
logger.exception(f"Invalid query filter string: {query_filter_string}")
return QueryFilterJSON()
@classmethod
def loader_options(cls) -> list[LoaderOption]:
return [joinedload(CookBook.household)]
class CookBookPagination(PaginationBase):
items: list[ReadCookBook]