Spaces:
Running
Running
| """ | |
| Recurring tasks API endpoints. | |
| """ | |
| from typing import List | |
| from fastapi import APIRouter, Depends, HTTPException | |
| from sqlmodel import Session | |
| from pydantic import BaseModel | |
| from src.db.session import get_session | |
| from src.mcp.tools import ( | |
| create_recurring_task, | |
| list_recurring_tasks, | |
| pause_recurring_task, | |
| resume_recurring_task, | |
| delete_recurring_task | |
| ) | |
| router = APIRouter() | |
| class RecurringTaskCreate(BaseModel): | |
| """Request model for creating recurring task.""" | |
| title: str | |
| description: str = "" | |
| frequency: str # 'daily', 'weekly', 'monthly' | |
| frequency_value: int = None | |
| class RecurringTaskUpdate(BaseModel): | |
| """Request model for updating recurring task.""" | |
| is_active: bool | |
| class RecurringTaskResponse(BaseModel): | |
| """Response model for recurring task.""" | |
| recurring_task_id: int | |
| title: str | |
| description: str | |
| frequency: str | |
| frequency_value: int = None | |
| is_active: bool | |
| last_generated: str = None | |
| created_at: str | |
| async def create_recurring( | |
| user_id: int, | |
| request: RecurringTaskCreate, | |
| session: Session = Depends(get_session) | |
| ): | |
| """ | |
| Create a new recurring task. | |
| Args: | |
| user_id: User ID | |
| request: Recurring task creation request | |
| session: Database session | |
| Returns: | |
| Created recurring task info | |
| """ | |
| result = create_recurring_task( | |
| user_id=user_id, | |
| title=request.title, | |
| description=request.description, | |
| frequency=request.frequency, | |
| frequency_value=request.frequency_value, | |
| session=session | |
| ) | |
| if "error" in result: | |
| raise HTTPException(status_code=400, detail=result["message"]) | |
| return result | |
| async def list_recurring( | |
| user_id: int, | |
| session: Session = Depends(get_session) | |
| ): | |
| """ | |
| List all recurring tasks for a user. | |
| Args: | |
| user_id: User ID | |
| session: Database session | |
| Returns: | |
| List of recurring tasks | |
| """ | |
| result = list_recurring_tasks(user_id=user_id, session=session) | |
| return result | |
| async def pause_recurring( | |
| user_id: int, | |
| recurring_task_id: int, | |
| session: Session = Depends(get_session) | |
| ): | |
| """ | |
| Pause a recurring task. | |
| Args: | |
| user_id: User ID | |
| recurring_task_id: Recurring task ID | |
| session: Database session | |
| Returns: | |
| Status | |
| """ | |
| result = pause_recurring_task( | |
| user_id=user_id, | |
| recurring_task_id=recurring_task_id, | |
| session=session | |
| ) | |
| if "error" in result: | |
| raise HTTPException(status_code=404, detail=result["message"]) | |
| return result | |
| async def resume_recurring( | |
| user_id: int, | |
| recurring_task_id: int, | |
| session: Session = Depends(get_session) | |
| ): | |
| """ | |
| Resume a paused recurring task. | |
| Args: | |
| user_id: User ID | |
| recurring_task_id: Recurring task ID | |
| session: Database session | |
| Returns: | |
| Status | |
| """ | |
| result = resume_recurring_task( | |
| user_id=user_id, | |
| recurring_task_id=recurring_task_id, | |
| session=session | |
| ) | |
| if "error" in result: | |
| raise HTTPException(status_code=404, detail=result["message"]) | |
| return result | |
| async def delete_recurring( | |
| user_id: int, | |
| recurring_task_id: int, | |
| session: Session = Depends(get_session) | |
| ): | |
| """ | |
| Delete a recurring task. | |
| Args: | |
| user_id: User ID | |
| recurring_task_id: Recurring task ID | |
| session: Database session | |
| Returns: | |
| Status | |
| """ | |
| result = delete_recurring_task( | |
| user_id=user_id, | |
| recurring_task_id=recurring_task_id, | |
| session=session | |
| ) | |
| if "error" in result: | |
| raise HTTPException(status_code=404, detail=result["message"]) | |
| return result | |