
    4?i
                         S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S\S	\	4S
 jrS\S\4S jrS\S\4S jrg)    )select)Session)Client)Visitor)VisitorCreate)AsyncSession)get_client_by_widgetdbdatac                 (  #    [        SU5        U R                  [        [        5      R	                  [        R
                  UR
                  :H  5      5      I Sh  vN nUR                  5       nU(       d  [        S5      eU R                  [        [        5      R	                  [        R                  UR                  :H  [        R                  UR                  :H  5      5      I Sh  vN nUR                  5       nU(       a  U$ [        UR                  UR                  UR                  UR                  UR                  S9nU R                  U5        U R!                  5       I Sh  vN   U R#                  U5      I Sh  vN   U$  GN/ N N$ N7f)z2
Async version using select() instead of .query()
zdata from visitor ----NzInvalid client widget id)
visitor_id	client_idname
ip_address
user_agent)printexecuter   r   whereclient_widget_idscalar_one_or_none
ValueErrorr   r   r   idr   r   r   addcommitrefresh)r
   r   clientresultexistingvisitors         6/var/www/html/livechat/backend/app/services/visitor.pycreate_or_get_visitorr!   .   sA    
 

"D) ::vV448M8MMN F &&(F344 ::w$//1*	
 F ((*H ??))YY????G FF7O
))+
**W
NC* sJ   AFF	BF(F)B F)F*FFFFFFvisitor_uuidc                    #    [        [        5      R                  [        R                  U:H  5      nU R	                  U5      I Sh  vN nUR                  5       R                  5       $  N"7f)z/
Fetch visitor by visitor UUID (Async version)
N)r   r   r   r   r   scalarsfirst)r
   r"   stmtr   s       r    get_visitor_by_visitor_idr'   Z   sR      '?  !3!3|!CDD::d##F>>!!## $s   AA+A)#A+c                     U R                  [        5      R                  [        R                  U:H  5      R	                  5       $ )N)queryr   filterr   r%   )r
   r"   s     r    get_visitor_by_idr+   c   s2    
  '"4"4"DFLLN    N)
sqlalchemyr   sqlalchemy.ormr   app.models.clientr   app.models.visitorr   app.schemas.visitorr   sqlalchemy.ext.asyncior   app.services.clientr	   r!   strr'   r+    r,   r    <module>r6      sW   L  " $ & - / 4)L ) )X$ $C $'  r,   