from pydantic import BaseModel, Field from datetime import datetime from typing import Optional from app.models.task import TaskStatus, TaskPriority class TaskBase(BaseModel): title: str = Field(..., min_length=1, max_length=255, description="Task title") description: Optional[str] = Field(None, description="Task description") status: TaskStatus = Field(TaskStatus.PENDING, description="Task status") priority: TaskPriority = Field(TaskPriority.MEDIUM, description="Task priority") due_date: Optional[datetime] = Field(None, description="Task due date") class TaskCreate(TaskBase): pass class TaskUpdate(BaseModel): title: Optional[str] = Field(None, min_length=1, max_length=255, description="Task title") description: Optional[str] = Field(None, description="Task description") status: Optional[TaskStatus] = Field(None, description="Task status") priority: Optional[TaskPriority] = Field(None, description="Task priority") due_date: Optional[datetime] = Field(None, description="Task due date") class TaskResponse(TaskBase): id: int created_at: datetime updated_at: datetime class Config: from_attributes = True