from pydantic import BaseModel, Field from typing import Optional from datetime import datetime class TaskBase(BaseModel): title: str = Field(..., max_length=255) description: Optional[str] = None image_url: Optional[str] = None duration_minutes: int = Field(default=30, ge=1) order: int = Field(default=0, ge=0) category: Optional[str] = None class TaskCreate(TaskBase): schedule_id: str class TaskUpdate(BaseModel): title: Optional[str] = Field(None, max_length=255) description: Optional[str] = None image_url: Optional[str] = None duration_minutes: Optional[int] = Field(None, ge=1) completed: Optional[bool] = None order: Optional[int] = Field(None, ge=0) category: Optional[str] = None class TaskInDB(TaskBase): id: str schedule_id: str completed: bool = False created_at: datetime updated_at: datetime class Config: from_attributes = True class Task(TaskInDB): pass