feat: re-write get all routes to use pagination (#1424)

rewrite get_all routes to use a pagination pattern to allow for better implementations of search, filter, and sorting on the frontend or by any client without fetching all the data. Additionally we added a CI check for running the Nuxt built to confirm that no TS errors were present. Finally, I had to remove the header support for the Shopping lists as the browser caching based off last_updated header was not allowing it to read recent updates due to how we're handling the updated_at property in the database with nested fields. This will have to be looked at in the future to reimplement. I'm unsure how many other routes have a similar issue. 

Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
This commit is contained in:
Michael Genson
2022-06-25 14:39:38 -05:00
committed by GitHub
parent c158672d12
commit cb15db2d27
55 changed files with 683 additions and 197 deletions

View File

@@ -1,6 +1,7 @@
from pydantic import UUID4, NoneStr
from mealie.schema._mealie import MealieModel
from mealie.schema.response.pagination import PaginationBase
# =============================================================================
# Group Events Notifier Options
@@ -83,6 +84,10 @@ class GroupEventNotifierOut(MealieModel):
orm_mode = True
class GroupEventPagination(PaginationBase):
items: list[GroupEventNotifierOut]
class GroupEventNotifierPrivate(GroupEventNotifierOut):
apprise_url: str

View File

@@ -7,6 +7,7 @@ from pydantic import UUID4
from mealie.schema._mealie import MealieModel
from mealie.schema.recipe.recipe_ingredient import IngredientFood, IngredientUnit
from mealie.schema.response.pagination import PaginationBase
class ShoppingListItemRecipeRef(MealieModel):
@@ -84,6 +85,10 @@ class ShoppingListSummary(ShoppingListSave):
orm_mode = True
class ShoppingListPagination(PaginationBase):
items: list[ShoppingListSummary]
class ShoppingListUpdate(ShoppingListSummary):
list_items: list[ShoppingListItemOut] = []

View File

@@ -7,6 +7,7 @@ from pydantic import UUID4, validator
from pydantic.datetime_parse import parse_datetime
from mealie.schema._mealie import MealieModel
from mealie.schema.response.pagination import PaginationBase
class WebhookType(str, enum.Enum):
@@ -57,3 +58,7 @@ class ReadWebhook(SaveWebhook):
class Config:
orm_mode = True
class WebhookPagination(PaginationBase):
items: list[ReadWebhook]