Ë
    ƒØçi<  ã                  ó˜   — d Z ddlmZ ddlZddlZddlmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ  ej                  e«      Zdd	„Zdd
„Zy)uÒ   ê¸°ë³¸ ê³„ì • bootstrap (W2-F15 Codex M2 ìˆ˜ìš©).

`app.main` ì „ì²´ë¥¼ importí•˜ì§€ ì•Šê³ ë„ CLIê°€ ì“¸ ìˆ˜ ìžˆë„ë¡ ë¶„ë¦¬ëœ helper.
multi-worker ê²½ìŸ ì¡°ê±´ì— ëŒ€ë¹„í•´ IntegrityErrorëŠ” benign no-op.
é    )ÚannotationsN)ÚdatetimeÚtimezone)ÚIntegrityError)Úsettings)Úhash_password)ÚUserAccountc           
     ó  — | j                  t        «      j                  t        j                  |k(  «      j	                  «       }|ryt        j                  t        j                  «      j                  «       }t        t        t        j                  «       «      ||t        |«      |d||¬«      }| j                  |«       	 | j                  «        y# t         $ r) | j#                  «        t$        j'                  d|«       Y yw xY w)uƒ  í•´ë‹¹ usernameì´ ì—†ìœ¼ë©´ ìƒì„±. multi-worker raceëŠ” IntegrityErrorë¡œ í¡ìˆ˜ (Codex High 2).

    ì„¤ëª…:
    - SELECT â†’ INSERT â†’ COMMITì€ ë‘ workerê°€ ë™ì‹œì— "ì—†ë‹¤"ê³  ë³´ê³  ë‘˜ ë‹¤ INSERTí•  ìˆ˜ ìžˆë‹¤.
    - username UNIQUE ì œì•½ ë•ì— ë‘ ë²ˆì§¸ COMMITì€ IntegrityErrorë¡œ ì‹¤íŒ¨.
    - ì´ ê²½ìš° "ì´ë¯¸ ìžˆìœ¼ë©´ OK"ê°€ ì •ë‹µì´ë¯€ë¡œ rollback + ë¬´ì‹œ.
    Né   )ÚidÚusernameÚdisplay_nameÚpassword_hashÚroleÚ	is_activeÚ
created_atÚ
updated_atz5default user %s already exists (concurrent bootstrap))Úqueryr	   Úfilterr   Úfirstr   Únowr   ÚutcÚ	isoformatÚstrÚuuidÚuuid4r   ÚaddÚcommitr   ÚrollbackÚloggerÚinfo)Údbr   Úpasswordr   r   Úexistingr   Úusers           úO/Users/manta/Documents/Projects/TheRoad-I1/backend/app/startup/default_users.pyÚensure_default_userr'      sÉ   € ð x‰xœÓ$×+Ñ+¬K×,@Ñ,@ÀHÑ,LÓM×SÑSÓU€HÙØÜ
,‰,”x—|‘|Ó
$×
.Ñ
.Ó
0€CÜÜŒtz‰z‹|ÓØØ!Ü# HÓ-ØØØØô	€Dð ‡FFˆ4„LðWØ
	‰	øÜò Wà
‰ŒÜ‰ÐKÈXÖVðWús   ÃC Ã/DÄDc                ó°   — t        | t        j                  t        j                  dd«       t        | t        j                  t        j
                  dd«       y)uI   2ê°œ ê¸°ë³¸ ê³„ì •(admin, creator) ìƒì„±. CLI/lifespan ê³µí†µ ì§„ìž…ì .Úadminu	   ê´€ë¦¬ìžÚcreatoru   í¬ë¦¬ì—ì´í„°N)r'   r   Údefault_admin_usernameÚdefault_admin_passwordÚdefault_creator_usernameÚdefault_creator_password)r"   s    r&   Úbootstrap_default_usersr/   4   sE   € äØ
ŒH×+Ñ+¬X×-LÑ-LØôô Ø
ŒH×-Ñ-¬x×/PÑ/PØÐ$õó    )
r   r   r#   r   r   r   r   r   ÚreturnÚNone)r1   r2   )Ú__doc__Ú
__future__r   Úloggingr   r   r   Úsqlalchemy.excr   Úapp.core.configr   Úapp.core.securityr   Úapp.models.catalogr	   Ú	getLoggerÚ__name__r    r'   r/   © r0   r&   Ú<module>r=      sA   ðñõ
 #ã Û ß 'å )å $Ý +Ý *à	ˆ×	Ñ	˜8Ó	$€óWô>	r0   