import uuid from datetime import date, datetime from typing import Optional from pydantic import BaseModel, ConfigDict, Field class SiteCreate(BaseModel): name: str = Field(min_length=1) city: Optional[str] = None pi_name: Optional[str] = None phone: Optional[str] = None contact: Optional[str] = None is_active: bool = True enrollment_plan_start_date: Optional[date] = None enrollment_plan_end_date: Optional[date] = None enrollment_plan_note: Optional[str] = None class SiteUpdate(BaseModel): name: Optional[str] = None city: Optional[str] = None pi_name: Optional[str] = None phone: Optional[str] = None contact: Optional[str] = None is_active: Optional[bool] = None enrollment_plan_start_date: Optional[date] = None enrollment_plan_end_date: Optional[date] = None enrollment_plan_note: Optional[str] = None class SiteRead(BaseModel): id: uuid.UUID study_id: uuid.UUID name: str city: Optional[str] pi_name: Optional[str] phone: Optional[str] contact: Optional[str] is_active: bool enrollment_target: Optional[int] enrollment_plan_start_date: Optional[date] enrollment_plan_end_date: Optional[date] enrollment_plan_note: Optional[str] created_at: datetime model_config = ConfigDict(from_attributes=True)