dashboard-nanobot/backend/api/bot_router.py

46 lines
1.4 KiB
Python

from fastapi import APIRouter, Depends
from sqlmodel import Session
from core.database import get_session
from schemas.bot import BotCreateRequest, BotPageAuthLoginRequest, BotUpdateRequest
from services.bot_management_service import (
authenticate_bot_page_access,
create_bot_record,
get_bot_detail_cached,
list_bots_with_cache,
test_provider_connection,
update_bot_record,
)
router = APIRouter()
@router.post("/api/providers/test")
async def test_provider(payload: dict):
return await test_provider_connection(payload)
@router.post("/api/bots")
def create_bot(payload: BotCreateRequest, session: Session = Depends(get_session)):
return create_bot_record(session, payload=payload)
@router.get("/api/bots")
def list_bots(session: Session = Depends(get_session)):
return list_bots_with_cache(session)
@router.get("/api/bots/{bot_id}")
def get_bot_detail(bot_id: str, session: Session = Depends(get_session)):
return get_bot_detail_cached(session, bot_id=bot_id)
@router.post("/api/bots/{bot_id}/auth/login")
def login_bot_page(bot_id: str, payload: BotPageAuthLoginRequest, session: Session = Depends(get_session)):
return authenticate_bot_page_access(session, bot_id=bot_id, password=payload.password)
@router.put("/api/bots/{bot_id}")
def update_bot(bot_id: str, payload: BotUpdateRequest, session: Session = Depends(get_session)):
return update_bot_record(session, bot_id=bot_id, payload=payload)