from motor.motor_asyncio import AsyncIOMotorClient
from beanie import init_beanie
from decouple import config
from typing import Optional

class MongoDB:
    client: Optional[AsyncIOMotorClient] = None
    database = None

mongodb = MongoDB()

async def connect_to_mongo():
    """Create database connection"""
    mongodb_url = config('MONGODB_URL', default='mongodb://admin:password@localhost:27017')
    db_name = config('DB_NAME', default='mana_pige_db')
    
    mongodb.client = AsyncIOMotorClient(mongodb_url)
    mongodb.database = mongodb.client[db_name]
    
    print(f"Connected to MongoDB: {db_name}")

async def close_mongo_connection():
    """Close database connection"""
    if mongodb.client:
        mongodb.client.close()
        print("Disconnected from MongoDB")

async def init_database(document_models: list):
    """Initialize Beanie with document models"""
    await init_beanie(database=mongodb.database, document_models=document_models)
    print("Initialized Beanie ODM")
