import uuid from datetime import date, datetime from typing import Optional from pydantic import BaseModel, ConfigDict class DataQueryCreate(BaseModel): title: str description: Optional[str] = None category: str priority: str site_id: Optional[uuid.UUID] = None subject_id: Optional[uuid.UUID] = None visit_id: Optional[uuid.UUID] = None assigned_to: Optional[uuid.UUID] = None due_date: Optional[date] = None class DataQueryUpdate(BaseModel): title: Optional[str] = None description: Optional[str] = None category: Optional[str] = None priority: Optional[str] = None assigned_to: Optional[uuid.UUID] = None due_date: Optional[date] = None status: Optional[str] = None resolution: Optional[str] = None class DataQueryRead(BaseModel): id: uuid.UUID study_id: uuid.UUID site_id: Optional[uuid.UUID] subject_id: Optional[uuid.UUID] visit_id: Optional[uuid.UUID] title: str description: Optional[str] category: str priority: str assigned_to: Optional[uuid.UUID] due_date: Optional[date] status: str resolution: 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)