from typing import Optional from datetime import datetime from pydantic import BaseModel from app.models.task import TaskStatus, TaskPriority # Shared properties class TaskBase(BaseModel): title: Optional[str] = None description: Optional[str] = None status: Optional[TaskStatus] = None priority: Optional[TaskPriority] = None due_date: Optional[datetime] = None is_completed: Optional[bool] = None # Properties to receive on task creation class TaskCreate(TaskBase): title: str status: TaskStatus = TaskStatus.TODO priority: TaskPriority = TaskPriority.MEDIUM # Properties to receive on task update class TaskUpdate(TaskBase): pass class TaskInDBBase(TaskBase): id: int title: str status: TaskStatus priority: TaskPriority is_completed: bool owner_id: int created_at: datetime updated_at: datetime class Config: from_attributes = True # Additional properties to return via API class Task(TaskInDBBase): pass # Additional properties stored in DB class TaskInDB(TaskInDBBase): pass