3
']                 @   sP   d Z ddlZddlZddlZddlmZ dZdZG dd deZ	edd	 ZdS )
z
Database access
    N   )initinfobotc               @   sD   e Zd Zdd Zdd Zdd Zdddd	d
Zdd Zdd ZdS )Databasec             K   sh   x4dD ],}||j  krttjt d|j  ||< qW || _tjf ddi|| _	| j	j
 | _
d| _d S )NuserdbnameZDEFAULT_Zkeepalives_idle<   r   )r   r   )keysgetattrsysmodules__name__upperkwargspsycopg2connectconncursorrowcount)selfr   i r    /opt/Infobot/plugins/database.py__init__   s    
 zDatabase.__init__c             C   s
   | j j S )N)r   fetchall)r   r   r   r   r      s    zDatabase.fetchallc             C   s
   | j j S )N)r   fetchone)r   r   r   r   r      s    zDatabase.fetchoneT)commitretryc            G   s   |r*t |d tkr*t|}|d g|d< y| jj|ft|  W nb tjk
rj   d| _| jj	  Y nV   t
j  | jf | j |r| j|f||fddi | S | jj| _|r| jj  | S )Nr   r   F)typetuplelistr   executer   ZIntegrityErrorr   r   Zrollback	traceback	print_excr   r   r   )r   stringr   r   argsr   r   r   r!      s$    

zDatabase.executec             C   s   | j j  d S )N)r   r   )r   r   r   r   r   4   s    zDatabase.commitc             C   s   | j j  d S )N)r   close)r   r   r   r   r&   7   s    zDatabase.closeN)	r   
__module____qualname__r   r   r   r!   r   r&   r   r   r   r   r      s   r   c             C   s"   t | jd | jd d| jd< d S )NZdbpassZdbhost)passwordhostZdb)r   configdata)botr   r   r   r   :   s    r   )
__doc__r   r   r"   Zutil.decoratorsr   ZDEFAULT_USERZDEFAULT_DBNAMEobjectr   r   r   r   r   <module>   s   -