Public Access
33 lines
958 B
Python
33 lines
958 B
Python
from __future__ import annotations
|
|
|
|
from typing import Optional
|
|
from uuid import UUID
|
|
|
|
from pydantic import BaseModel, Field, model_validator
|
|
|
|
|
|
class NeverSuggestCreate(BaseModel):
|
|
family_profile_id: UUID
|
|
ingredient_id: Optional[UUID] = None
|
|
recipe_id: Optional[UUID] = None
|
|
reason: Optional[str] = Field(default=None, max_length=50)
|
|
notes: Optional[str] = None
|
|
|
|
@model_validator(mode="after")
|
|
def _exactly_one_target(self) -> "NeverSuggestCreate":
|
|
present = sum(x is not None for x in (self.ingredient_id, self.recipe_id))
|
|
if present != 1:
|
|
raise ValueError("exactly one of ingredient_id or recipe_id must be set")
|
|
return self
|
|
|
|
|
|
class NeverSuggestRead(BaseModel):
|
|
id: UUID
|
|
family_profile_id: UUID
|
|
ingredient_id: Optional[UUID] = None
|
|
recipe_id: Optional[UUID] = None
|
|
reason: Optional[str] = None
|
|
notes: Optional[str] = None
|
|
|
|
model_config = {"from_attributes": True}
|