File size: 980 Bytes
fade1d6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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