import io from api import investors import pandas as pd from db.db import db_dependency from fastapi import FastAPI, File, UploadFile from services.openrouter import InvestorProcessor from services.querying import QueryProcessor app = FastAPI() app.include_router(investors.router) # init_database() @app.get("/") def read_root(): return {"Hello": "World"} @app.post("/parse-csv") async def parse_csv(db: db_dependency, file: UploadFile = File(...)): # Read uploaded CSV with pandas content = await file.read() df = pd.read_csv(io.StringIO(content.decode("utf-8"))) # Process the dataframe processor = InvestorProcessor(sql_session=db) results = await processor.process_csv(df) # Convert Pydantic objects to dictionaries return {"results": [r.dict() for r in results]} @app.post("/query") async def query_investors(db: db_dependency, question: str): processor = QueryProcessor(sql_session=db) results = processor.process_query(question) return {"results": results} if __name__ == "__main__": import uvicorn uvicorn.run(app="main:app", host="localhost", port=8000, reload=True)