o
    @Tj3                     @   sV   d Z ddlmZ ddlmZ ddlmZ ddlmZ dede	de
eef fd	d
ZdS )u   User get-or-create logic.

Single source of truth for user creation — both the user router
and face_service delegate here to prevent duplicate users.
    )select)AsyncSession)GLOBAL_USER_ID)Userdbnamereturnc                    s   |dkr|  tttjtkI dH }| dfS |  tttj|kI dH }| }|dur7|dfS t|d}| 	| | 
 I dH  |dfS )u  Find existing user by name or create a new one.

    Returns (user, created) where created=True if a new user was made.
    name="unknown" always resolves to the fixed-UUID global user — otherwise
    callers would silently spawn duplicate "unknown" users.
    unknownNF)r   T)executer   r   whereidr   
scalar_oner   scalar_one_or_noneaddflush)r   r   resultuser r   9/home/ubuntu/htdocs/ootd-api/app/services/user_service.pyget_or_create_user   s   
  

r   N)__doc__
sqlalchemyr   sqlalchemy.ext.asyncior   
app.configr   app.models.userr   strtupleboolr   r   r   r   r   <module>   s    
