o
    Bh	                     @   sh   d Z ddlZddlmZmZ ddlmZ eeZ	G dd dZ
e
 Zdd Zd	d
 Zde
fddZdS )z3
Database connection and configuration for MongoDB
    N)connect
disconnect)get_settingsc                   @   s6   e Zd ZdZdd Zdd Zdd Zdefd	d
ZdS )DatabaseManagerz#MongoDB database connection managerc                 C   s   t  | _d | _d S )N)r   settings_connectionself r
   YC:\Users\vibe-look\OneDrive\Desktop\Pige-main\backend\data-service\app\config\database.py__init__   s   
zDatabaseManager.__init__c                    s   zL| j du rKt| jj| jj| jj| jj| jj| jj| jj	d | jj	d | jj	d | jj
| jjdd| _ td| jj d| jj d| jj  W dS W dS  tyb } z	td|   d}~ww )	zConnect to MongoDB databaseNi  default)dbhostportusernamepasswordZauthentication_sourceZserverSelectionTimeoutMSZconnectTimeoutMSZsocketTimeoutMSZmaxPoolSizeZminPoolSizealiaszConnected to MongoDB: :/zFailed to connect to MongoDB: )r   r   r   ZMONGODB_DATABASEZMONGODB_HOSTZMONGODB_PORTZMONGODB_USERNAMEZMONGODB_PASSWORDZMONGODB_AUTH_SOURCEZMONGODB_TIMEOUTZMONGODB_MAX_POOL_SIZEZMONGODB_MIN_POOL_SIZEloggerinfo	Exceptionerrorr	   er
   r
   r   connect_to_database   s0   



.z#DatabaseManager.connect_to_databasec              
      sj   z| j durtdd d| _ td W dS W dS  ty4 } ztd|  W Y d}~dS d}~ww )z Disconnect from MongoDB databaseNr   )r   zDisconnected from MongoDBz"Error disconnecting from MongoDB: )r   r   r   r   r   r   r   r
   r
   r   disconnect_from_database)   s   

z(DatabaseManager.disconnect_from_databasereturnc                 C   s
   | j duS )zCheck if database is connectedN)r   r   r
   r
   r   get_connection_status3   s   
z%DatabaseManager.get_connection_statusN)	__name__
__module____qualname____doc__r   r   r   boolr   r
   r
   r
   r   r      s    
r   c                         t  I dH  dS )zConnect to MongoDBN)
db_managerr   r
   r
   r
   r   connect_to_mongo<      r'   c                      r%   )zClose MongoDB connectionN)r&   r   r
   r
   r
   r   close_mongo_connectionA   r(   r)   r   c                   C   s   t S )zGet database manager instanceN)r&   r
   r
   r
   r   get_db_managerF   s   r*   )r#   loggingZmongoenginer   r   app.config.settingsr   	getLoggerr    r   r   r&   r'   r)   r*   r
   r
   r
   r   <module>   s    
.