Commit
·
c5411c1
1
Parent(s):
7cf424d
Improve admin Mongo database detection and error messages
Browse files- api/main.py +24 -10
api/main.py
CHANGED
|
@@ -70,21 +70,26 @@ def _init_admin_mongo() -> None:
|
|
| 70 |
return
|
| 71 |
try:
|
| 72 |
admin_client = MongoClient(ADMIN_MONGO_URI)
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
|
|
|
| 76 |
admin_db = admin_client["admin"]
|
|
|
|
|
|
|
| 77 |
admin_media_clicks = admin_db["media_clicks"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 78 |
try:
|
| 79 |
admin_media_clicks.drop_index("user_id_1_header_1_media_id_1")
|
| 80 |
log.info("Dropped legacy index user_id_1_header_1_media_id_1")
|
| 81 |
except Exception as idx_err:
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
admin_media_clicks.database.name,
|
| 86 |
-
admin_media_clicks.name,
|
| 87 |
-
)
|
| 88 |
except Exception as err:
|
| 89 |
log.error("Failed to init admin Mongo client: %s", err)
|
| 90 |
admin_media_clicks = None
|
|
@@ -204,7 +209,16 @@ def log_media_click(user_id: Optional[str], category_id: Optional[str]) -> None:
|
|
| 204 |
}
|
| 205 |
)
|
| 206 |
except Exception as err:
|
| 207 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 208 |
|
| 209 |
|
| 210 |
@app.get("/")
|
|
|
|
| 70 |
return
|
| 71 |
try:
|
| 72 |
admin_client = MongoClient(ADMIN_MONGO_URI)
|
| 73 |
+
# get_default_database() extracts database from connection string (e.g., /adminPanel)
|
| 74 |
+
admin_db = admin_client.get_default_database()
|
| 75 |
+
if admin_db is None:
|
| 76 |
+
# Fallback if no database in URI
|
| 77 |
admin_db = admin_client["admin"]
|
| 78 |
+
log.warning("No database in connection string, defaulting to 'admin'")
|
| 79 |
+
|
| 80 |
admin_media_clicks = admin_db["media_clicks"]
|
| 81 |
+
log.info(
|
| 82 |
+
"Admin media click logging initialized: db=%s collection=%s",
|
| 83 |
+
admin_db.name,
|
| 84 |
+
admin_media_clicks.name,
|
| 85 |
+
)
|
| 86 |
try:
|
| 87 |
admin_media_clicks.drop_index("user_id_1_header_1_media_id_1")
|
| 88 |
log.info("Dropped legacy index user_id_1_header_1_media_id_1")
|
| 89 |
except Exception as idx_err:
|
| 90 |
+
# Index drop failure is non-critical (often permission issue)
|
| 91 |
+
if "Unauthorized" not in str(idx_err):
|
| 92 |
+
log.info("Skipping legacy index drop: %s", idx_err)
|
|
|
|
|
|
|
|
|
|
| 93 |
except Exception as err:
|
| 94 |
log.error("Failed to init admin Mongo client: %s", err)
|
| 95 |
admin_media_clicks = None
|
|
|
|
| 209 |
}
|
| 210 |
)
|
| 211 |
except Exception as err:
|
| 212 |
+
err_str = str(err)
|
| 213 |
+
if "Unauthorized" in err_str or "not authorized" in err_str.lower():
|
| 214 |
+
log.warning(
|
| 215 |
+
"Admin media click logging failed (permissions): user lacks read/write on db=%s collection=%s. "
|
| 216 |
+
"Check MongoDB user permissions.",
|
| 217 |
+
admin_media_clicks.database.name,
|
| 218 |
+
admin_media_clicks.name,
|
| 219 |
+
)
|
| 220 |
+
else:
|
| 221 |
+
log.warning("Admin media click logging failed: %s", err)
|
| 222 |
|
| 223 |
|
| 224 |
@app.get("/")
|