from typing import Optional from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorDatabase, AsyncIOMotorCollection from . import __init__ # noqa: F401 from ..config.settings import MONGODB_URL, DATABASE_NAME, COLLECTION_NAME _client: Optional[AsyncIOMotorClient] = None _db: Optional[AsyncIOMotorDatabase] = None _collection: Optional[AsyncIOMotorCollection] = None async def connect_to_mongo() -> None: global _client, _db, _collection _client = AsyncIOMotorClient(MONGODB_URL) _db = _client[DATABASE_NAME] _collection = _db[COLLECTION_NAME] async def close_mongo_connection() -> None: global _client if _client: _client.close() def get_db() -> AsyncIOMotorDatabase: assert _db is not None, "DB not initialized. Call connect_to_mongo() first." return _db def get_collection() -> AsyncIOMotorCollection: assert _collection is not None, "Collection not initialized. Call connect_to_mongo() first." return _collection