Spaces:
Runtime error
Runtime error
| import duckdb | |
| from fastapi import FastAPI, HTTPException, Query | |
| import os | |
| app = FastAPI() | |
| # --- ๐ CONFIG --- | |
| VALID_KEYS = {"Satuu5": "Master_Admin"} | |
| HF_TOKEN = os.getenv("HF_TOKEN") | |
| DATA_URL = "https://huggingface.co/datasets/Watchhrr/HITECH_DB/resolve/main/Hi-Tek-DB.zip.001" | |
| def home(): | |
| status = "READY" if HF_TOKEN else "TOKEN_MISSING_IN_SETTINGS" | |
| return {"status": "Online", "auth": status, "Owner": "Swapnil"} | |
| def search(query: str, key: str = None): | |
| if key not in VALID_KEYS: | |
| raise HTTPException(status_code=403, detail="Invalid Key!") | |
| if not HF_TOKEN: | |
| return {"error": "Bhai, Settings mein HF_TOKEN secret dalo pehle!"} | |
| con = duckdb.connect() | |
| try: | |
| con.execute("INSTALL httpfs; LOAD httpfs;") | |
| # --- FIX: Sabse stable method for HTTP Authentication --- | |
| con.execute(f"SET http_headers = 'Authorization: Bearer {HF_TOKEN}';") | |
| # Data scanning (Automatic Indexing) | |
| # Pehli bar scan karne mein 30-40 sec lag sakte hain | |
| sql_check = f"SELECT * FROM read_csv_auto('{DATA_URL}', all_varchar=True) LIMIT 1" | |
| df_sample = con.execute(sql_check).df() | |
| cols = df_sample.columns | |
| # Phone/Mobile column detect karna | |
| search_col = next((c for c in cols if any(x in c.lower() for x in ['phone', 'mobile', 'number', 'contact'])), cols[0]) | |
| # Final Search Query | |
| final_sql = f"SELECT * FROM read_csv_auto('{DATA_URL}', all_varchar=True) WHERE \"{search_col}\" LIKE '%{query}%' LIMIT 5" | |
| result = con.execute(final_sql).df().to_dict(orient="records") | |
| return { | |
| "status": "success", | |
| "column_searched": search_col, | |
| "results": result | |
| } | |
| except Exception as e: | |
| # Agar connection timeout ho jaye | |
| return {"status": "error", "message": "Database is heavy, retrying...", "details": str(e)} | |