Netra / backend /app /database /mongo.py
chikentikka's picture
Add violation rules, NETRA UI overhaul, MongoDB challan store, and model weights
f184c04
Raw
History Blame Contribute Delete
1.09 kB
"""MongoDB connection for the challan-evidence store.
Best-effort: if Mongo is unreachable, helpers return None and callers no-op, so
the detection pipeline keeps working even without a database.
"""
from app.config import settings
_client = None
_unavailable = False
def get_client():
global _client, _unavailable
if _unavailable:
return None
if _client is None:
try:
from pymongo import MongoClient
client = MongoClient(settings.mongodb_uri, serverSelectionTimeoutMS=5000)
client.admin.command("ping") # fail fast if the server isn't there
_client = client
except Exception as exc: # noqa: BLE001 — any connection issue → disable
print(f"[mongo] challan store unavailable: {exc}")
_unavailable = True
return None
return _client
def challans():
"""The challan collection, or None when Mongo is unavailable."""
client = get_client()
if client is None:
return None
return client[settings.mongodb_db][settings.mongodb_collection]