from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from app.db.database import SessionLocal from app.repositories.tool_repository import ToolRepository from app.api.schemas import ToolCreate, ToolResponse router = APIRouter(prefix="/tools", tags=["Tools"]) # Dependency para abrir e fechar conexão automaticamente def get_db(): db = SessionLocal() try: yield db finally: db.close() @router.post("/", response_model=ToolResponse) def create_tool(tool: ToolCreate, db: Session = Depends(get_db)): repo = ToolRepository(db) return repo.create( name=tool.name, description=tool.description, parameters=tool.parameters ) @router.get("/", response_model=list[ToolResponse]) def list_tools(db: Session = Depends(get_db)): repo = ToolRepository(db) return repo.get_all() @router.get("/{tool_id}", response_model=ToolResponse) def get_tool(tool_id: int, db: Session = Depends(get_db)): repo = ToolRepository(db) tool = repo.get_by_id(tool_id) if not tool: raise HTTPException(status_code=404, detail="Tool não encontrada") return tool @router.delete("/{tool_id}") def delete_tool(tool_id: int, db: Session = Depends(get_db)): repo = ToolRepository(db) tool = repo.delete(tool_id) if not tool: raise HTTPException(status_code=404, detail="Tool não encontrada") return {"message": "Tool removida com sucesso"}