Spaces:
Running
Running
| """ | |
| MongoDB integration proxy for text scans. | |
| Replaces the old PostgreSQL system to use the unified MongoDB Atlas database. | |
| """ | |
| from app.database import text_results_collection | |
| import json | |
| async def save_scan(*args, **kwargs): | |
| # This was historically used to save to PostgreSQL. | |
| # It has been deprecated because text scans are now saved centrally | |
| # to MongoDB via `save_scan_internal` in dashboard_router.py. | |
| pass | |
| async def get_scan_history(user_email: str, limit: int = 50) -> list: | |
| cursor = text_results_collection.find({"user_email": user_email}).sort("created_at", -1).limit(limit) | |
| docs = await cursor.to_list(length=limit) | |
| history = [] | |
| for d in docs: | |
| res = d.get("full_result", {}) | |
| # Format created_at to string if it's a datetime object | |
| created_at = d.get("created_at") | |
| if hasattr(created_at, "isoformat"): | |
| created_at = created_at.isoformat() | |
| history.append({ | |
| "scan_id": d.get("scan_id"), | |
| "verdict": d.get("verdict"), | |
| "threat_level": d.get("threat_level"), | |
| "confidence": d.get("confidence") or res.get("confidence"), | |
| "word_count": res.get("word_count"), | |
| "text_preview": res.get("text_preview") or d.get("extra", {}).get("textPreview", ""), | |
| "created_at": created_at | |
| }) | |
| return history | |
| async def get_scan_by_id(scan_id: str) -> dict: | |
| doc = await text_results_collection.find_one({"scan_id": scan_id}) | |
| if not doc: | |
| return {} | |
| res = doc.get("full_result", {}) | |
| # For backward compatibility, ensure scan_id is in the top level of the returned dict | |
| if "scan_id" not in res: | |
| res["scan_id"] = scan_id | |
| return res | |