Spaces:
Sleeping
Sleeping
| from typing import Optional | |
| from fastapi import APIRouter, HTTPException | |
| from src.services import DataExtractorService | |
| from pydantic import BaseModel | |
| from src.schemas import Message, SQLQueryExtractor | |
| from loguru import logger | |
| class UserQuery(BaseModel): | |
| user_query: str | |
| class Response(BaseModel): | |
| status: str | |
| data: Optional[list[dict]] = [] | |
| sql_query: str | |
| output: SQLQueryExtractor | |
| class DataExtractorController: | |
| def __init__(self): | |
| self.router = APIRouter() | |
| self.router.add_api_route( | |
| "/extract", | |
| self.extrcat, | |
| methods=["POST"], | |
| ) | |
| async def extrcat( | |
| self, user_query: UserQuery, message_history: Optional[list[Message]] = [] | |
| ): | |
| logger.info("Extracting data...") | |
| try: | |
| async with DataExtractorService() as service: | |
| response, sql_query, output = await service.extract( | |
| user_query=user_query.user_query, message_history=message_history | |
| ) | |
| return Response( | |
| status="success", data=response, sql_query=sql_query, output=output | |
| ) | |
| except HTTPException as e: | |
| logger.error(e) | |
| raise e | |
| except Exception as e: | |
| logger.error(e) | |
| raise HTTPException(status_code=500, detail=str(e)) | |