from datetime import datetime from typing import Optional from pydantic import BaseModel, EmailStr from app.models.task import TaskStatus, TaskPriority class UserBase(BaseModel): email: EmailStr full_name: Optional[str] = None phone_number: Optional[str] = None whatsapp_number: Optional[str] = None class UserCreate(UserBase): password: str class UserResponse(UserBase): id: int is_active: bool created_at: datetime class Config: from_attributes = True class UserLogin(BaseModel): email: EmailStr password: str class Token(BaseModel): access_token: str token_type: str class TaskBase(BaseModel): title: str description: Optional[str] = None priority: TaskPriority = TaskPriority.MEDIUM due_date: Optional[datetime] = None scheduled_at: Optional[datetime] = None class TaskCreate(TaskBase): pass class TaskUpdate(BaseModel): title: Optional[str] = None description: Optional[str] = None priority: Optional[TaskPriority] = None status: Optional[TaskStatus] = None due_date: Optional[datetime] = None scheduled_at: Optional[datetime] = None class TaskResponse(TaskBase): id: int status: TaskStatus ai_suggested_time: Optional[datetime] = None whatsapp_reminder_sent: bool whatsapp_completion_sent: bool owner_id: int created_at: datetime updated_at: Optional[datetime] = None completed_at: Optional[datetime] = None class Config: from_attributes = True class HealthResponse(BaseModel): status: str timestamp: datetime version: str