o
    Xh}                     @   sb   d dl Z d dlmZ d dlm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	ZdS )
    N)datetime)AsyncSession)
Prediction)save_input_images_async)logger)
UploadFilec                   @   s0   e Zd ZdedefddZdedefddZd	S )
SavingInputImagedbidc                 C   s   || _ || _d S )N)r	   r
   )selfr	   r
    r   M/var/www/html/construction_image-detection-poc/src/components/input_images.py__init__
   s   
zSavingInputImage.__init__before_imageafter_imagec              
      s  t  d}tjd|}ztj|dd td|  tj|d}tj|d}z)t	|d}|
| I d H  W d    n1 sIw   Y  td	|  W n tym } z
td
 td
|d }~ww z)t	|d}	|	
| I d H  W d    n1 sw   Y  td|  W n ty } z
td td|d }~ww zt|I d H \}
}td|
 d|  W n ty } z
td td|d }~ww | j}z,t||
|i ddd}| j| | j I d H  | j|I d H  td|j  W n ty! } z
td td|d }~ww d|j|
|||dW S  tyG } ztd tdt| d }~ww )Nz%Y%m%d_%H%M%SInput_ImagesT)exist_okz!Created folder for input images: z
before.jpgz	after.jpgwbzSaved 'before' image at: zFailed to save 'before' image.zSaved 'after' image at: zFailed to save 'after' image.zGenerated URLs - Before: z	, After: zFailed to generate image URLs. pending)user_idbefore_image_urlafter_image_urltext_resultsoutput_image_urlstatuszSaved prediction with ID: z*Failed to save prediction to the database.zDatabase operation failed.zImages uploaded successfully!)messageprediction_id
before_url	after_urlbefore_path
after_pathz-Error occurred while processing input images.zError while saving images: )r   nowstrftimeospathjoinmakedirsr   infoopenwriteread	Exception	exceptionr   r
   r   r	   addcommitrefreshstr)r   r   r   	timestampfolder_pathr    r!   bfeafr   r   r
   
predictionr   r   r   saving_input_images   s   









z$SavingInputImage.saving_input_imagesN)__name__
__module____qualname__r   intr   r   r8   r   r   r   r   r   	   s    r   )r$   r   sqlalchemy.ext.asyncior   src.models.predictionr   src.utils.files_utilsr   src.common.loggerr   fastapir   r   r   r   r   r   <module>   s    