Briefly / controllers /profile_handler.py
Ayush456's picture
test: implement DeepEval LLM evaluation pipeline for backend
c9e5159
Raw
History Blame Contribute Delete
1.55 kB
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}")