from fastapi import APIRouter, HTTPException from llama_index.core.indices.base import BaseIndex from llama_index.core.query_engine import BaseQueryEngine from components.indexers.news_indexer import get_or_build_index import os router = APIRouter() DATA_PATH = "data/raw" INDEX_PATH = "storage/index" _index: BaseIndex = None def get_index() -> BaseIndex: global _index if _index is None: if not os.path.exists(DATA_PATH): raise RuntimeError("❌ `data/raw/` is missing! Add documents for indexing.") _index = get_or_build_index(DATA_PATH, INDEX_PATH) return _index @router.get("/query-news") def query_news(q: str): index = get_index() query_engine: BaseQueryEngine = index.as_query_engine() response = query_engine.query(q) return {"response": str(response)}