"""Pydantic schemas for Station and StationRecipeAssignment.""" from datetime import datetime from typing import Optional from pydantic import BaseModel, ConfigDict, Field class StationCreate(BaseModel): code: str = Field(..., min_length=1, max_length=100) name: str = Field(..., min_length=1, max_length=255) location: Optional[str] = Field(default=None, max_length=255) notes: Optional[str] = None active: bool = True class StationUpdate(BaseModel): name: Optional[str] = Field(default=None, min_length=1, max_length=255) location: Optional[str] = Field(default=None, max_length=255) notes: Optional[str] = None active: Optional[bool] = None class StationResponse(BaseModel): model_config = ConfigDict(from_attributes=True) id: int code: str name: str location: Optional[str] notes: Optional[str] active: bool created_by: int created_at: datetime class StationRecipeAssignmentCreate(BaseModel): recipe_id: int = Field(..., gt=0) class StationRecipeAssignmentResponse(BaseModel): model_config = ConfigDict(from_attributes=True) id: int station_id: int recipe_id: int assigned_by: int assigned_at: datetime class RecipeSummary(BaseModel): model_config = ConfigDict(from_attributes=True) id: int code: str name: str active: bool class StationWithRecipesResponse(StationResponse): recipes: list[RecipeSummary] = Field(default_factory=list)