import json import logging from controllers.mongo import users_collection from redis_client import redis_client, CACHE_TTL from bson import ObjectId logger = logging.getLogger(__name__) def get_profile(user_id: str): cache_key = f"user_profile:{user_id}" try: cached_profile = redis_client.get(cache_key) if cached_profile: return json.loads(cached_profile) except Exception as e: logger.warning(f"Redis get error for {cache_key}: {e}") user = users_collection.find_one({"_id": ObjectId(user_id)}, {"password": 0}) print(user) if not user: return None if "_id" in user: user["_id"] = str(user["_id"]) try: redis_client.setex(cache_key, CACHE_TTL, json.dumps(user)) except Exception as e: logger.warning(f"Redis set error for {cache_key}: {e}") return user def update_profile(user_id: str, payload: dict): users_collection.update_one( {"_id": user_id}, {"$set": payload} ) try: redis_client.delete(f"user_profile:{user_id}") except Exception as e: logger.warning(f"Redis delete error for user_profile:{user_id}: {e}") return get_profile(user_id) def delete_profile_field(user_id: str, field: str): users_collection.update_one( {"_id": user_id}, {"$unset": {field: ""}} ) try: redis_client.delete(f"user_profile:{user_id}") except Exception as e: logger.warning(f"Redis delete error for user_profile:{user_id}: {e}")