dashboard-nanobot/backend/api/bot_management_router.py

69 lines
2.3 KiB
Python
Raw Normal View History

2026-03-31 04:31:47 +00:00
from fastapi import APIRouter, Depends, HTTPException
from sqlmodel import Session
from core.database import get_session
from services.bot_lifecycle_service import (
deactivate_bot_instance,
delete_bot_instance,
disable_bot_instance,
enable_bot_instance,
start_bot_instance,
stop_bot_instance,
)
router = APIRouter()
@router.post("/api/bots/{bot_id}/start")
async def start_bot(bot_id: str, session: Session = Depends(get_session)):
try:
return await start_bot_instance(session, bot_id)
except ValueError as exc:
raise HTTPException(status_code=404, detail=str(exc)) from exc
except PermissionError as exc:
raise HTTPException(status_code=403, detail=str(exc)) from exc
except RuntimeError as exc:
raise HTTPException(status_code=500, detail=str(exc)) from exc
@router.post("/api/bots/{bot_id}/stop")
def stop_bot(bot_id: str, session: Session = Depends(get_session)):
try:
return stop_bot_instance(session, bot_id)
except ValueError as exc:
raise HTTPException(status_code=404, detail=str(exc)) from exc
except PermissionError as exc:
raise HTTPException(status_code=403, detail=str(exc)) from exc
@router.post("/api/bots/{bot_id}/enable")
def enable_bot(bot_id: str, session: Session = Depends(get_session)):
try:
return enable_bot_instance(session, bot_id)
except ValueError as exc:
raise HTTPException(status_code=404, detail=str(exc)) from exc
@router.post("/api/bots/{bot_id}/disable")
def disable_bot(bot_id: str, session: Session = Depends(get_session)):
try:
return disable_bot_instance(session, bot_id)
except ValueError as exc:
raise HTTPException(status_code=404, detail=str(exc)) from exc
@router.post("/api/bots/{bot_id}/deactivate")
def deactivate_bot(bot_id: str, session: Session = Depends(get_session)):
try:
return deactivate_bot_instance(session, bot_id)
except ValueError as exc:
raise HTTPException(status_code=404, detail=str(exc)) from exc
@router.delete("/api/bots/{bot_id}")
def delete_bot(bot_id: str, delete_workspace: bool = True, session: Session = Depends(get_session)):
try:
return delete_bot_instance(session, bot_id, delete_workspace=delete_workspace)
except ValueError as exc:
raise HTTPException(status_code=404, detail=str(exc)) from exc