Phase3 / src /mcp_server /tools /delete_task.py
mahmedmumair's picture
Deploy from GitHub commit 99fe6ce
4b4f221 verified
Raw
History Blame Contribute Delete
3.27 kB
"""
MCP Tool: delete_task
This tool allows the AI agent to delete a task for a user.
"""
from typing import Dict, Any
from ..server import mcp_server
from sqlmodel import Session, select, delete
from ...models.task import Task
@mcp_server.register_tool("delete_task")
async def delete_task(user_id: str, task_id: str) -> Dict[str, Any]:
"""
Delete a task for the specified user.
Args:
user_id: The ID of the user who owns the task
task_id: The ID of the task to delete
Returns:
Dictionary containing the result of the operation
"""
try:
# Import database session here to avoid circular imports
from sqlmodel import Session
from src.database.connection import engine
from src.services.task_service import TaskService
# Validate inputs
if not user_id or not task_id:
return {
"success": False,
"error": "Both user_id and task_id are required"
}
# Create database session
with Session(engine) as db_session:
task_service = TaskService()
# Delete the task
success = task_service.delete_task(
task_id=task_id,
user_id=user_id,
db=db_session
)
if success:
return {
"success": True,
"message": f"Task {task_id} deleted successfully"
}
else:
return {
"success": False,
"error": f"Task {task_id} not found or does not belong to user"
}
except Exception as e:
return {
"success": False,
"error": f"Failed to delete task: {str(e)}"
}
# For integration with the existing Phase II task system
def delete_task_with_db_session(user_id: str, task_id: str, db_session: Session = None) -> Dict[str, Any]:
"""
Delete a task for the specified user using database session.
Args:
user_id: The ID of the user who owns the task
task_id: The ID of the task to delete
db_session: Database session to use for the operation
Returns:
Dictionary containing the result of the operation
"""
try:
# Validate inputs
if not user_id or not task_id:
return {
"success": False,
"error": "Both user_id and task_id are required"
}
# Query the database for the specific task belonging to the user
statement = select(Task).where(Task.user_id == user_id).where(Task.id == task_id)
result = db_session.exec(statement)
task = result.first()
if not task:
return {
"success": False,
"error": "Task not found or does not belong to user"
}
# Delete the task from the database
db_session.delete(task)
db_session.commit()
return {
"success": True,
"message": f"Task {task_id} deleted successfully"
}
except Exception as e:
return {
"success": False,
"error": f"Failed to delete task: {str(e)}"
}