itishalogicgo commited on
Commit
83bfcb0
·
1 Parent(s): 892ed91

Add AI-Enhancer MongoDB support with environment variables and case-insensitive appname handling

Browse files
Files changed (1) hide show
  1. api/main.py +78 -2
api/main.py CHANGED
@@ -108,6 +108,15 @@ collage_maker_admin_db = None
108
  collage_maker_media_clicks = None
109
  collage_maker_categories = None
110
 
 
 
 
 
 
 
 
 
 
111
 
112
  def get_collage_maker_client() -> Optional[MongoClient]:
113
  """Get collage-maker MongoDB client."""
@@ -165,6 +174,59 @@ def _init_collage_maker_mongo() -> None:
165
  _init_collage_maker_mongo()
166
 
167
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  def get_category_id_from_collage_maker() -> Optional[str]:
169
  """Query category ID from collage-maker categories collection."""
170
  if collage_maker_categories is None:
@@ -441,14 +503,22 @@ def log_media_click(user_id: Optional[str], category_id: Optional[str], appname:
441
  """Log to admin media_clicks collection only if user_id is provided.
442
 
443
  If appname='collage-maker', logs to collage-maker MongoDB instead of regular admin MongoDB.
 
444
  """
445
  # Determine which media_clicks collection to use
446
  target_media_clicks = None
447
- if appname == "collage-maker":
 
 
448
  target_media_clicks = collage_maker_media_clicks
449
  if target_media_clicks is None:
450
  log.warning("Collage-maker media_clicks not initialized, skipping log")
451
  return
 
 
 
 
 
452
  else:
453
  target_media_clicks = admin_media_clicks
454
  if target_media_clicks is None:
@@ -533,7 +603,13 @@ def log_media_click(user_id: Optional[str], category_id: Optional[str], appname:
533
  )
534
  except Exception as err:
535
  err_str = str(err)
536
- target_name = "collage-maker" if appname == "collage-maker" else "admin"
 
 
 
 
 
 
537
  if "Unauthorized" in err_str or "not authorized" in err_str.lower():
538
  log.warning(
539
  "%s media click logging failed (permissions): user lacks read/write on db=%s collection=%s. "
 
108
  collage_maker_media_clicks = None
109
  collage_maker_categories = None
110
 
111
+ # AI-Enhancer MongoDB configuration
112
+ AI_ENHANCER_MONGO_URI = os.environ.get("MONGODB_AI_ENHANCER")
113
+ AI_ENHANCER_DB_NAME = os.environ.get("MONGODB_AI_ENHANCER_DB_NAME", "ai-enhancer")
114
+ AI_ENHANCER_ADMIN_DB_NAME = os.environ.get("MONGODB_AI_ENHANCER_ADMIN_DB_NAME", "test")
115
+ ai_enhancer_client = None
116
+ ai_enhancer_db = None
117
+ ai_enhancer_admin_db = None
118
+ ai_enhancer_media_clicks = None
119
+
120
 
121
  def get_collage_maker_client() -> Optional[MongoClient]:
122
  """Get collage-maker MongoDB client."""
 
174
  _init_collage_maker_mongo()
175
 
176
 
177
+ def get_ai_enhancer_client() -> Optional[MongoClient]:
178
+ """Get AI-Enhancer MongoDB client."""
179
+ global ai_enhancer_client
180
+ if ai_enhancer_client is None and AI_ENHANCER_MONGO_URI:
181
+ try:
182
+ ai_enhancer_client = MongoClient(AI_ENHANCER_MONGO_URI)
183
+ log.info("AI-Enhancer MongoDB client initialized")
184
+ except Exception as err:
185
+ log.error("Failed to initialize AI-Enhancer MongoDB client: %s", err)
186
+ ai_enhancer_client = None
187
+ return ai_enhancer_client
188
+
189
+
190
+ def get_ai_enhancer_database() -> Optional[Any]:
191
+ """Get AI-Enhancer database instance."""
192
+ global ai_enhancer_db
193
+ client = get_ai_enhancer_client()
194
+ if client is None:
195
+ return None
196
+ if ai_enhancer_db is None:
197
+ try:
198
+ ai_enhancer_db = client[AI_ENHANCER_DB_NAME]
199
+ log.info("AI-Enhancer database initialized: %s", AI_ENHANCER_DB_NAME)
200
+ except Exception as err:
201
+ log.error("Failed to get AI-Enhancer database: %s", err)
202
+ ai_enhancer_db = None
203
+ return ai_enhancer_db
204
+
205
+
206
+ def _init_ai_enhancer_mongo() -> None:
207
+ """Initialize AI-Enhancer MongoDB connections."""
208
+ global ai_enhancer_admin_db, ai_enhancer_media_clicks
209
+ client = get_ai_enhancer_client()
210
+ if client is None:
211
+ log.info("AI-Enhancer Mongo URI not provided; AI-Enhancer features disabled")
212
+ return
213
+ try:
214
+ ai_enhancer_admin_db = client[AI_ENHANCER_ADMIN_DB_NAME]
215
+ ai_enhancer_media_clicks = ai_enhancer_admin_db["media_clicks"]
216
+ log.info(
217
+ "AI-Enhancer admin initialized: db=%s, media_clicks=%s",
218
+ AI_ENHANCER_ADMIN_DB_NAME,
219
+ ai_enhancer_media_clicks.name,
220
+ )
221
+ except Exception as err:
222
+ log.error("Failed to init AI-Enhancer admin Mongo: %s", err)
223
+ ai_enhancer_admin_db = None
224
+ ai_enhancer_media_clicks = None
225
+
226
+
227
+ _init_ai_enhancer_mongo()
228
+
229
+
230
  def get_category_id_from_collage_maker() -> Optional[str]:
231
  """Query category ID from collage-maker categories collection."""
232
  if collage_maker_categories is None:
 
503
  """Log to admin media_clicks collection only if user_id is provided.
504
 
505
  If appname='collage-maker', logs to collage-maker MongoDB instead of regular admin MongoDB.
506
+ If appname='AI-Enhancer' (case-insensitive), logs to AI-Enhancer MongoDB.
507
  """
508
  # Determine which media_clicks collection to use
509
  target_media_clicks = None
510
+ appname_lower = appname.lower() if appname else None
511
+
512
+ if appname_lower == "collage-maker":
513
  target_media_clicks = collage_maker_media_clicks
514
  if target_media_clicks is None:
515
  log.warning("Collage-maker media_clicks not initialized, skipping log")
516
  return
517
+ elif appname_lower == "ai-enhancer":
518
+ target_media_clicks = ai_enhancer_media_clicks
519
+ if target_media_clicks is None:
520
+ log.warning("AI-Enhancer media_clicks not initialized, skipping log")
521
+ return
522
  else:
523
  target_media_clicks = admin_media_clicks
524
  if target_media_clicks is None:
 
603
  )
604
  except Exception as err:
605
  err_str = str(err)
606
+ appname_lower = appname.lower() if appname else None
607
+ if appname_lower == "collage-maker":
608
+ target_name = "collage-maker"
609
+ elif appname_lower == "ai-enhancer":
610
+ target_name = "AI-Enhancer"
611
+ else:
612
+ target_name = "admin"
613
  if "Unauthorized" in err_str or "not authorized" in err_str.lower():
614
  log.warning(
615
  "%s media click logging failed (permissions): user lacks read/write on db=%s collection=%s. "