o
     e	                     @   sX   d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 G dd deZdS )	    )QueueN)settings)Thread)OperationalError)APILogsModelc                       sF   e Zd Z fddZdddZdd Zd	d
 Zdd Zdd Z  Z	S )InsertLogIntoDatabasec                    s   t    d| _ttdrtj| _d| _ttdrtj| _| jdk r&tdd| _ttdr;tj| _| jdk r;td	t| jd
| _	d S )NdefaultDRF_API_LOGGER_DEFAULT_DATABASE2   DRF_LOGGER_QUEUE_MAX_SIZE   zx
            DRF API LOGGER EXCEPTION
            Value of DRF_LOGGER_QUEUE_MAX_SIZE must be greater than 0
            
   DRF_LOGGER_INTERVALz~
                DRF API LOGGER EXCEPTION
                Value of DRF_LOGGER_INTERVAL must be greater than 0
                )maxsize)
super__init__r	   hasattrr   r   	Exceptionr   r   _queueself	__class__ Z/var/www/html/venv/lib/python3.10/site-packages/drf_api_logger/insert_log_into_database.pyr      s   





zInsertLogIntoDatabase.__init__returnNc                 C   s   |    d S N)start_queue_processr   r   r   r   run)   s   zInsertLogIntoDatabase.runc                 C   s6   | j tdi | | j  | jkr|   d S d S )Nr   )r   putr   qsizer   _start_bulk_insertion)r   datar   r   r   put_log_data,   s   z"InsertLogIntoDatabase.put_log_datac                 C   s   	 t | j |   qr   )timesleepr   r!   r   r   r   r   r   2   s   z)InsertLogIntoDatabase.start_queue_processc                 C   s>   g }| j  s|| j   | j  r|r| | d S d S r   )r   emptyappendget_insert_into_data_base)r   	bulk_itemr   r   r   r!   7   s   

z+InsertLogIntoDatabase._start_bulk_insertionc              
   C   s`   zt j| j| W d S  ty   td ty/ } ztd| W Y d }~d S d }~ww )Nz|
            DRF API LOGGER EXCEPTION
            Model does not exists.
            Did you forget to migrate?
            zDRF API LOGGER EXCEPTION:)r   objectsusingr	   bulk_creater   r   print)r   r*   er   r   r   r)   >   s   z,InsertLogIntoDatabase._insert_into_data_base)r   N)
__name__
__module____qualname__r   r   r#   r   r!   r)   __classcell__r   r   r   r   r   
   s    
r   )queuer   r$   django.confr   	threadingr   django.db.utilsr   drf_api_logger.modelsr   r   r   r   r   r   <module>   s    