|
|
from pymongo import MongoClient
|
|
|
import os
|
|
|
from dotenv import load_dotenv
|
|
|
|
|
|
load_dotenv()
|
|
|
|
|
|
client = None
|
|
|
db = None
|
|
|
|
|
|
def init_db():
|
|
|
global client, db
|
|
|
|
|
|
MONGO_URI = os.getenv('MONGO_URI')
|
|
|
DATABASE_NAME = os.getenv('DATABASE_NAME', 'recommendation_system')
|
|
|
|
|
|
if not MONGO_URI:
|
|
|
raise ValueError("MONGO_URI environment variable is required")
|
|
|
|
|
|
try:
|
|
|
client = MongoClient(MONGO_URI)
|
|
|
db = client[DATABASE_NAME]
|
|
|
|
|
|
|
|
|
client.admin.command('ping')
|
|
|
print(f"Connected to MongoDB database: {DATABASE_NAME}")
|
|
|
|
|
|
|
|
|
db.users.create_index("email", unique=True)
|
|
|
db.users.create_index("username", unique=True)
|
|
|
db.history.create_index([("user_id", 1), ("timestamp", -1)])
|
|
|
|
|
|
return db
|
|
|
except Exception as e:
|
|
|
print(f"Failed to connect to MongoDB: {e}")
|
|
|
raise e
|
|
|
|
|
|
def get_db():
|
|
|
global db
|
|
|
if db is None:
|
|
|
init_db()
|
|
|
return db |