""" Task schemas for API request and response validation """ from datetime import datetime from typing import Optional from pydantic import BaseModel, Field from app.models.task import TaskPriority, TaskStatus class TaskBase(BaseModel): """ Base task schema with common attributes """ title: str = Field(..., min_length=1, max_length=255) description: Optional[str] = None status: Optional[TaskStatus] = TaskStatus.TODO priority: Optional[TaskPriority] = TaskPriority.MEDIUM due_date: Optional[datetime] = None class TaskCreate(TaskBase): """ Schema for task creation """ pass class TaskUpdate(BaseModel): """ Schema for task update """ title: Optional[str] = Field(None, min_length=1, max_length=255) description: Optional[str] = None status: Optional[TaskStatus] = None priority: Optional[TaskPriority] = None due_date: Optional[datetime] = None is_deleted: Optional[bool] = None class TaskInDBBase(TaskBase): """ Base schema for task in database """ id: int owner_id: int created_at: datetime updated_at: datetime is_deleted: bool class Config: """ Pydantic config """ orm_mode = True class Task(TaskInDBBase): """ Schema for task response """ pass class TaskInDB(TaskInDBBase): """ Schema for task in database """ pass