
    2.,h                        d dl Z d dlmZmZmZmZmZ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 d dlmZ d d	lmZmZ 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m Z m!Z! d dl"m#Z# d dl$m%Z%  e       Z&e&jO                  d      defd       Z(e&jS                  de  ee#      g       ee       ee#      fdedede	fd       Z*e&jW                  dee!          ee      fde	fd       Z,e&jW                  d      d de-fd       Z.y)!    N)	APIRouterDepends	WebSocketWebSocketDisconnectHTTPExceptionRequest)Session)List)get_db)Module)	BaseModel)sample_task)
menu_agentChatRequest)get_pusher_client)SessionLocal)generate_image)GeneratedImage)ImageRequestImageResponse	ModuleOut)get_current_user)Branchz/chat	websocketc                   K   | j                          d{    	 t        d       	 	 | j                          d{   }t        j                  |      }|j                  d      }|j                  d      }|r|s/| j                  t        j                  ddi             d{    t        d| d|        t        ||	      }t        j                  |      }t        d
| d|        | j                  |j                                d{    7 7 7 v7 # t        $ r t        d       Y nOt        $ rD}dt        |      i}| j                  t        j                  |             d{  7   Y d}~gd}~ww xY w	 | j                          d{  7   t        d       y# | j                          d{  7   t        d       w xY ww)zH
    WebSocket endpoint for live chat between frontend and backend.
    Nz!WebSocket connection established.
session_idmessageerrorzInvalid inputzReceived from client (Session z): )r   r   zSending to client (Session z*WebSocket connection closed by the client.z WebSocket connection terminated.)acceptprintreceive_textjsonloadsget	send_textdumpsr   r   runmodel_dump_jsonr   	Exceptionstrclose)	r   datar   r   user_messagereqresponsee	error_msgs	            :/var/www/html/hubwallet-dev/src/menu_design/apps/router.pywebsocket_chatr3      s    
 


$212A&3355**T*$[[6
&{{95 "#--djj'?9S.TUUU6zl#l^TU "ZN%>>#. 3J<s8*MN))(*B*B*DEEE- 	  6 V F& BC A$c!f-	))$**Y*?@@@A  oo01 oo01s   GDGF+ D  DA(D  %D&D  *F+ +A&D  DD  F+ GD  D  D   F4F+ 6F>4E=2E53E=8F+ =FF+ GFG+G?G GGz/api/v1/generate-image)response_modeldependenciesrequestimage_requestdbc                   K   	 |j                  t              j                  t        j                  |j                  k(  t        j                  |j                  k(        j                         }|st        dd      |j                  }|j                  }|j                  r|j                  nd}t        |j                  |j                  |j                  |      }|D ],  }	t        |j                  |||	      }
|j                  |
       . |j                          t!        |      S # t"        $ r}t        dd	t%        |             d }~ww xY ww)
Ni  z>You do not have permission to generate images for this branch.)status_codedetail   )desclayoutstyleimage_number)	branch_iduser_idstore_id	image_url)
image_urlsi  zError generating images: )queryr   filterrA   rB   firstr   rC   r@   r   r=   r>   r?   r   addcommitr   r)   r*   )r6   r7   r8   userbranchrB   rC   r@   rE   rD   	new_imager0   s               r2   create_imagerN   D   sD    ,Z&!(( 7 77NNdll*
 %' 	
 W  ..?? 6C5O5O}11UV $## ''%%%	

 $ 	I&'11!#	I FF9	 			 
33 Z6OPSTUPVx4XYYZs)   ED#D( 'E(	E1E

EEz/modules)r4   c                 H    | j                  t              j                         S )N)rF   r   all)r8   s    r2   get_modulesrQ   z   s    88F!!    z	/run-tasknamec                 J    t        j                  |       }|j                  ddS )NzTask submitted)task_idstatus)r   delayid)rS   tasks     r2   run_sample_taskrZ      s"    T"Dww*:;;rR   )
CeleryUser)/osfastapir   r   r   r   r   r   sqlalchemy.ormr	   typingr
   src.utils.dbr   src.menu_design.apps.modelsr   pydanticr   #src.menu_design.utils.celery_workerr    src.menu_design.core.menu_designr   r   src.utils.pusher_configr   r"   r   src.menu_design.apps.controllerr   r   src.menu_design.apps.schemasr   r   r   src.apps.auth.controllerr   src.apps.stores.modelsr   routerr   r3   postrN   r$   rQ   r*   rZ    rR   r2   <module>rm      s$   	 ^ ^ "   .  ; D 5  % : 6 M M 5 )	 ')2I )2 )2Z %mSZ[kSlRmn &/	!	"	2Z2Z2Z 	2Z o2Zj JtI7%fo "G " 8" K<# < <rR   