from pydantic import BaseModel, Field from datetime import datetime from typing import Optional, List from models import TaskStatus, RecurrenceType # Reminder Schemas class ReminderBase(BaseModel): trigger_time: datetime recurrence_type: RecurrenceType = RecurrenceType.none recurrence_interval: Optional[int] = None remind_count_limit: int = 0 notify_push: bool = False notify_telegram: bool = False class ReminderCreate(ReminderBase): task_id: int class ReminderUpdate(BaseModel): trigger_time: Optional[datetime] = None recurrence_type: Optional[RecurrenceType] = None recurrence_interval: Optional[int] = None remind_count_limit: Optional[int] = None remind_count_current: Optional[int] = None notify_push: Optional[bool] = None notify_telegram: Optional[bool] = None class Reminder(ReminderBase): id: int task_id: int remind_count_current: int created_at: datetime updated_at: datetime class Config: from_attributes = True # Task Schemas class TaskBase(BaseModel): title: str description: Optional[str] = None telegram_user_id: str class TaskCreate(TaskBase): pass class TaskUpdate(BaseModel): title: Optional[str] = None description: Optional[str] = None status: Optional[TaskStatus] = None class Task(TaskBase): id: int status: TaskStatus created_at: datetime updated_at: datetime reminders: List[Reminder] = [] class Config: from_attributes = True