from pydantic import BaseModel, Field, validator from typing import List, Optional from datetime import datetime class PietanzaBase(BaseModel): nome: str = Field(..., min_length=1, max_length=150) descrizione: Optional[str] = None allergeni: Optional[List[str]] = [] class PietanzaCreate(PietanzaBase): @validator('allergeni') def validate_allergeni(cls, v): if v is None: return [] # Common allergens validation valid_allergeni = { 'glutine', 'lattosio', 'uova', 'pesce', 'crostacei', 'arachidi', 'frutta_a_guscio', 'soia', 'sedano', 'senape', 'sesamo', 'solfiti' } for allergen in v: if allergen not in valid_allergeni: raise ValueError(f"Allergene non valido: {allergen}") return v class PietanzaUpdate(BaseModel): nome: Optional[str] = Field(None, min_length=1, max_length=150) descrizione: Optional[str] = None allergeni: Optional[List[str]] = None @validator('allergeni') def validate_allergeni(cls, v): if v is None: return v valid_allergeni = { 'glutine', 'lattosio', 'uova', 'pesce', 'crostacei', 'arachidi', 'frutta_a_guscio', 'soia', 'sedano', 'senape', 'sesamo', 'solfiti' } for allergen in v: if allergen not in valid_allergeni: raise ValueError(f"Allergene non valido: {allergen}") return v class PietanzaResponse(PietanzaBase): id: int created_at: datetime updated_at: datetime class Config: from_attributes = True