mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-28 05:05:12 -05:00
feat: recipe timeline backend api (#1685)
* added recipe_timeline_events table to db * added schema and routes for recipe timeline events * added missing mixin and fixed update schema * added tests * adjusted migration revision tree * updated alembic revision test * added initial timeline event for new recipes * added additional tests * added event bus support * renamed event_dt to timestamp * add timeline_events to ignore list * run code-gen * use new test routes implementation * use doc string syntax * moved event type enum from db to schema Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
This commit is contained in:
@@ -70,6 +70,13 @@ from .recipe_scraper import ScrapeRecipe, ScrapeRecipeTest
|
||||
from .recipe_settings import RecipeSettings
|
||||
from .recipe_share_token import RecipeShareToken, RecipeShareTokenCreate, RecipeShareTokenSave, RecipeShareTokenSummary
|
||||
from .recipe_step import IngredientReferences, RecipeStep
|
||||
from .recipe_timeline_events import (
|
||||
RecipeTimelineEventCreate,
|
||||
RecipeTimelineEventIn,
|
||||
RecipeTimelineEventOut,
|
||||
RecipeTimelineEventPagination,
|
||||
RecipeTimelineEventUpdate,
|
||||
)
|
||||
from .recipe_tool import RecipeToolCreate, RecipeToolOut, RecipeToolResponse, RecipeToolSave
|
||||
from .request_helpers import RecipeSlug, RecipeZipTokenResponse, SlugResponse, UpdateImageResponse
|
||||
|
||||
@@ -78,6 +85,11 @@ __all__ = [
|
||||
"RecipeToolOut",
|
||||
"RecipeToolResponse",
|
||||
"RecipeToolSave",
|
||||
"RecipeTimelineEventCreate",
|
||||
"RecipeTimelineEventIn",
|
||||
"RecipeTimelineEventOut",
|
||||
"RecipeTimelineEventPagination",
|
||||
"RecipeTimelineEventUpdate",
|
||||
"RecipeAsset",
|
||||
"RecipeSettings",
|
||||
"RecipeShareToken",
|
||||
|
||||
53
mealie/schema/recipe/recipe_timeline_events.py
Normal file
53
mealie/schema/recipe/recipe_timeline_events.py
Normal file
@@ -0,0 +1,53 @@
|
||||
from datetime import datetime
|
||||
from enum import Enum
|
||||
|
||||
from pydantic import UUID4
|
||||
|
||||
from mealie.schema._mealie.mealie_model import MealieModel
|
||||
from mealie.schema.response.pagination import PaginationBase
|
||||
|
||||
|
||||
class TimelineEventType(Enum):
|
||||
system = "system"
|
||||
info = "info"
|
||||
comment = "comment"
|
||||
|
||||
|
||||
class RecipeTimelineEventIn(MealieModel):
|
||||
user_id: UUID4 | None = None
|
||||
"""can be inferred in some contexts, so it's not required"""
|
||||
|
||||
subject: str
|
||||
event_type: TimelineEventType
|
||||
|
||||
message: str | None = None
|
||||
image: str | None = None
|
||||
|
||||
timestamp: datetime = datetime.now()
|
||||
|
||||
class Config:
|
||||
use_enum_values = True
|
||||
|
||||
|
||||
class RecipeTimelineEventCreate(RecipeTimelineEventIn):
|
||||
recipe_id: UUID4
|
||||
user_id: UUID4
|
||||
|
||||
|
||||
class RecipeTimelineEventUpdate(MealieModel):
|
||||
subject: str
|
||||
message: str | None = None
|
||||
image: str | None = None
|
||||
|
||||
|
||||
class RecipeTimelineEventOut(RecipeTimelineEventCreate):
|
||||
id: UUID4
|
||||
created_at: datetime
|
||||
update_at: datetime
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
|
||||
class RecipeTimelineEventPagination(PaginationBase):
|
||||
items: list[RecipeTimelineEventOut]
|
||||
Reference in New Issue
Block a user