import uuid from datetime import date, datetime from typing import Optional from pydantic import BaseModel, ConfigDict class IssueCreate(BaseModel): title: str category: str level: str due_date: Optional[date] = None owner_id: Optional[uuid.UUID] = None site_id: Optional[uuid.UUID] = None subject_id: Optional[uuid.UUID] = None description: Optional[str] = None class IssueUpdate(BaseModel): title: Optional[str] = None category: Optional[str] = None level: Optional[str] = None due_date: Optional[date] = None owner_id: Optional[uuid.UUID] = None status: Optional[str] = None capa: Optional[str] = None description: Optional[str] = None class IssueRead(BaseModel): id: uuid.UUID study_id: uuid.UUID site_id: Optional[uuid.UUID] subject_id: Optional[uuid.UUID] title: str description: Optional[str] category: str level: str owner_id: Optional[uuid.UUID] due_date: Optional[date] status: str capa: Optional[str] closed_at: Optional[datetime] created_by: uuid.UUID created_at: datetime updated_at: datetime is_overdue: bool | None = None model_config = ConfigDict(from_attributes=True)