Spaces:
Sleeping
Sleeping
File size: 1,896 Bytes
1cff1e5 5837391 1cff1e5 5837391 1cff1e5 03faf26 1cff1e5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | from motor.motor_asyncio import AsyncIOMotorClient
import redis.asyncio as aioredis
from config import get_settings
settings = get_settings()
# MongoDB Atlas
mongo_client: AsyncIOMotorClient = None
db = None
# Redis
redis_client: aioredis.Redis = None
async def connect_db():
"""Initialize MongoDB and Redis connections."""
global mongo_client, db, redis_client
# MongoDB Atlas
mongo_client = AsyncIOMotorClient(settings.MONGO_URI)
db = mongo_client[settings.MONGO_DB_NAME]
# Create indexes
await db.users.create_index("email", unique=True)
await db.resumes.create_index("user_id", unique=True)
await db.skills.create_index("user_id")
await db.sessions.create_index("user_id")
await db.results.create_index("session_id")
await db.results.create_index("user_id")
await db.answers.create_index("user_id")
await db.answers.create_index("session_id")
await db.questions.create_index("role_id")
await db.jd_verifications.create_index([("user_id", 1), ("cache_key", 1)])
# Redis
redis_client = aioredis.from_url(
settings.REDIS_URL,
decode_responses=True,
)
# Test connections
try:
await mongo_client.admin.command("ping")
print("✅ Connected to MongoDB Atlas")
except Exception as e:
print(f"❌ Failed to connect to MongoDB: {e}")
try:
await redis_client.ping()
print("✅ Connected to Redis")
except Exception as e:
print(f"⚠️ Failed to connect to Redis (URL might be invalid or unreachable): {e}")
async def close_db():
"""Close database connections."""
global mongo_client, redis_client
if mongo_client:
mongo_client.close()
if redis_client:
await redis_client.close()
print("🔌 Database connections closed")
def get_db():
return db
def get_redis():
return redis_client
|