from pymongo import MongoClient
from dotenv import load_dotenv
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
import os

load_dotenv()

class DatabaseManager:
    _instance = None

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super(DatabaseManager, cls).__new__(cls)
            mongodb_url = os.getenv("MONGODB_URL")
            db_name = os.getenv("MONGODB_DB_NAME")
            cls._instance.client = MongoClient(mongodb_url)
            cls._instance.db = cls._instance.client[db_name]
        return cls._instance

    def get_collection(self, collection_name: str):
        return self.db[collection_name]

    def close(self):
        self.client.close()



SQLALCHEMY_DATABASE_URL = os.getenv("DB_URL")

engine = create_engine(SQLALCHEMY_DATABASE_URL)

SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base = declarative_base()
