o
    hi                     @   s   d dl mZmZ d dlmZmZmZ d dlmZ eddddZ	G dd	 d	eZ
e Ze	d
de
fddZe	ddd ZdS )    )FastAPIHTTPException)	BaseModelField	validator)LocalImageGeneratorzLocal Image Generation APIu@   🚀 GPU-based Self-Hosted Image Generator (returns base64 only)z5.0.0)titledescriptionversionc                   @   s   e Zd ZU edddZeed< edddZeed< edddZeed	< ed
ddZ	e
ed< ed
ddZe
ed< edddZe
ed< ed	dd Zeddd ZdS )ImageRequest.zPrompt for image generation)r	   promptzVisual style or themecategorysdxlzModel: sdxl, sd15, realistic
model_namei   zImage width in pixelswidthzImage height in pixelsheight   zNumber of images (max 3)image_countc                 C   s"   g d}||vrt d| |S )N)r   sd15	realisticzmodel_name must be one of: 
ValueError)clsvalueallowed_models r   E/var/www/eduai.edurigo.com/generate_image/testing/image_generation.pyvalidate_model_name   s   z ImageRequest.validate_model_namec                 C   s(   d|  krdkst d t d|S )Nr      z#image_count must be between 1 and 3r   )r   r   r   r   r   validate_image_count   s
   z!ImageRequest.validate_image_countN)__name__
__module____qualname__r   r   str__annotations__r   r   r   intr   r   r   r   r   r   r   r   r   r      s   
 
r   z/generate-imagerequestc              
      s   z't j| j| j| j| j| j| jd}|stddddt	| dd|idW S  t
y? } ztdd	t| dd
}~ww )z=
    Generate one or more base64 images using local GPU.
    )r   r   r   r   r   r     zImage generation failed.status_codedetailsuccessz! image(s) generated successfully.images)statusmessagedatazError generating image: N)	generatorgenerate_multiple_imagesr   r   r   r   r   r   r   len	Exceptionr#   )r&   r,   er   r   r   generate_image+   s(   	r5   z/healthc               
      sF   z
t  } d| dW S  ty" } ztddt| dd}~ww )z#Check if GPU and model are healthy.r+   )r-   r/   r'   zHealth check failed: r(   N)r0   check_healthr3   r   r#   )health_statusr4   r   r   r   health_checkF   s   r8   N)fastapir   r   pydanticr   r   r   local_image_generatorr   appr   r0   postr5   getr8   r   r   r   r   <module>   s    	