
    +j"                       S SK Jr  S SKrS SKJr  S SKJr  S SKJrJrJ	r	J
r
JrJrJrJrJrJrJr  S SKJrJrJrJr  S SKJr  S SKJr   " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)    )annotationsN)datetime)Any)JSON
BigIntegerBooleanCheckConstraintDateTime
ForeignKeyIndexIntegerNumericStringText)Mappedforeignmapped_columnrelationship)get_utc_now)Basec            	      $   \ rS rSr% Sr\" \" S5      SS S9rS\S'   \" \" S	5      SS
9r	S\S'   \" \
SSS9rS\S'   \" \" S5      5      rS\S'   \" \" SS9S\S9rS\S'   \" SSS S SSS9rS\S'   \" SSSS 9\" S!S5      \" S"S#S$94rS(S% jrS&rg'))Asset   assets$   Tc                 >    [        [        R                  " 5       5      $ Nstruuiduuid4     :/home/wildlama/comfy/ComfyUI/app/assets/database/models.py<lambda>Asset.<lambda>       c$**,6Gr#   primary_keydefaultMapped[str]id   nullableMapped[str | None]hashFr   r/   r*   Mapped[int]
size_bytes   	mime_typetimezoneMapped[datetime]
created_atAssetReferenceassetc                 V    [         R                  [        [        R                  5      :H  $ r   )r   r,   r   r;   asset_idr"   r#   r$   r%   r&   *   s    EHH0G0G(HHr#   c                 $    [         R                  /$ r   )r;   r>   r"   r#   r$   r%   r&   +   s    n556r#   all,delete-orphan)back_populatesprimaryjoinforeign_keyscascadepassive_deletesMapped[list[AssetReference]]
referencesuq_assets_hashuniqueix_assets_mime_typezsize_bytes >= 0ck_assets_size_nonnegnamec                T    SU R                    SU R                  =(       d    SS S  S3$ )Nz
<Asset id=z hash=    >)r,   r1   selfs    r$   __repr__Asset.__repr__8   s+    DGG9FDIIOSb+A*B!DDr#   r"   Nreturnr   )__name__
__module____qualname____firstlineno____tablename__r   r   r,   __annotations__r1   r   r4   r6   r
   r   r:   r   rG   r   r	   __table_args__rU   __static_attributes__r"   r#   r$   r   r      s    M#r
.GB   -VC[4HD
H+JPQRJR$1&+$>I!>#0% 5+$J   0<H6#0J,  	t4#[1)0GHNEr#   r   c                     \ rS rSr% SrSr\" \" S5      SS S9rS\	S	'   \" \" S5      \
" S
SS9SS9rS\	S'   \" \SS9rS\	S'   \" \SS9rS\	S'   \" \SSS9rS\	S'   \" \SSS9rS\	S'   \" \SSS9rS\	S'   \" \" S5      SSS9rS\	S'   \" \" S5      SS9rS\	S'   \" \" S5      \
" S S!S95      rS\	S"'   \" \" SS#95      rS$\	S%'   \" \" SS#9SS&S9rS$\	S''   \" \" S5      SS&S9rS\	S('   \" \" SS)9S\S9rS*\	S+'   \" \" SS)9S\S9rS*\	S,'   \" \" SS)9S\S9r S*\	S-'   \" \" SS)9SS&S9r!S.\	S/'   \"" S0S1\/S2S39r#S4\	S5'   \"" S \/S6 S79r$S8\	S9'   \"" S:S;SS<9r%S=\	S>'   \"" S:S;SS?S@9r&SA\	SB'   \"" SCSS2SSDSE9r'SF\	SG'   \(" SHSSSI9\(" SJS5      \(" SKS5      \(" SLS5      \(" SMS5      \(" SNS5      \(" SOS+5      \(" SPS-5      \(" SQS/5      \(" SRS"5      \(" SSSS5      \)" STSUSV9\)" SWSXSV94r*S[SY jr+SZr,g&)\r;   <   zUnified model combining file cache state and user-facing metadata.

Each row represents either:
- A filesystem reference (file_path is set) with cache state
- An API-created reference (file_path is NULL) without cache state
asset_referencesr   Tc                 >    [        [        R                  " 5       5      $ r   r   r"   r#   r$   r%   AssetReference.<lambda>G   r'   r#   r(   r+   r,   z	assets.idCASCADEondeleteFr.   r>   r0   	file_pathzMapped[int | None]mtime_nsr2   zMapped[bool]needs_verify
is_missingr   r3   enrichment_level   rP   owner_id   rN   asset_references.idzSET NULL
preview_idnone_as_nullzMapped[dict[str, Any] | None]user_metadataNsystem_metadatajob_idr7   r9   r:   
updated_atlast_access_timezMapped[datetime | None]
deleted_atr   rG   selectin)rA   rC   lazyzMapped[Asset]r<   c                 $    [         R                  /$ r   )r;   r,   r"   r#   r$   r%   re   w   s    ^../r#   )rC   remote_sidezMapped[AssetReference | None]preview_refasset_referencer@   )rA   rD   rE   z Mapped[list[AssetReferenceMeta]]metadata_entriesztags,asset_references)rA   rD   rE   overlapsMapped[list[AssetReferenceTag]]	tag_linksasset_reference_tagsz4tag_links,asset_reference_links,asset_references,tag)	secondaryrA   r|   viewonlyr   zMapped[list[Tag]]tagsuq_asset_references_file_pathrI   ix_asset_references_asset_idix_asset_references_owner_idix_asset_references_nameix_asset_references_is_missing$ix_asset_references_enrichment_levelix_asset_references_created_at$ix_asset_references_last_access_timeix_asset_references_deleted_atix_asset_references_preview_idix_asset_references_owner_namez%(mtime_ns IS NULL) OR (mtime_ns >= 0)ck_ar_mtime_nonnegrM   z/enrichment_level >= 0 AND enrichment_level <= 2ck_ar_enrichment_level_rangec                    U R                   (       a  SU R                   < 3OSnSU R                   SU R                  < U S3$ )Nz path=rP   z<AssetReference id=z name=rR   )ri   r,   rN   )rT   	path_parts     r$   rU   AssetReference.__repr__   s<    37>>fT^^./r	$TWWIVDII=1MMr#   r"   rW   )-rY   rZ   r[   r\   __doc__r]   r   r   r,   r^   r   r>   r   ri   r   rj   r   rk   rl   r   rm   ro   rN   rr   r   ru   rv   rw   r
   r   r:   rx   ry   rz   r   r<   r   r   r   r   r   r	   r_   rU   r`   r"   r#   r$   r;   r;   <   s)    'M#r
.GB  *r
J{Y?%Hk 
 %2$$FI!F#0d#KH K!.wPU!VL,V,WueTJT$1'EST$UkU *&+rRHkR%fSkEBD+B%2r
J4zJ&J"  4A$4M0  6C$$6O2  "/vbzDRV!WFW#0% 5+$J   $1% 5+$J   *7% 5+*&  +8% 4+J'  (#Z	E=  2> \/2K.  :F(#:6  2>(#(	2I.  +()GD
  	-{4H,j9,j9(&1.=46HI.=46HI.=.=.
FC3:N	
 	=/	
N*Nr#   r;   c            	      v   \ rS rSr% Sr\" \" S5      \" SSS9SS9rS	\	S
'   \" \" S5      SS9r
S	\	S'   \" \SSS9rS\	S'   \" \" S5      SS9rS\	S'   \" \" SS5      SS9rS\	S'   \" \SS9rS\	S'   \" \" SS9SS9rS\	S'   \" SS9rS \	S!'   \" S"S5      \" S#SS5      \" S$SS5      \" S%SS5      \" S&S'S(94rS)rg*)+AssetReferenceMeta   asset_reference_metar   rq   rf   rg   Tr)   r+   asset_reference_idr-   keyr   r(   r3   ordinali   r.   r0   val_str&   
   zMapped[float | None]val_numzMapped[bool | None]val_boolrs   zMapped[Any | None]val_jsonr   rA   Mapped[AssetReference]r   ix_asset_reference_meta_key#ix_asset_reference_meta_key_val_str#ix_asset_reference_meta_key_val_num$ix_asset_reference_meta_key_val_boolzZval_str IS NOT NULL OR val_num IS NOT NULL OR val_bool IS NOT NULL OR val_json IS NOT NULL	has_valuerM   r"   N)rY   rZ   r[   r\   r]   r   r   r   r   r^   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r_   r`   r"   r#   r$   r   r      s   *M&3r
(9=' 
 %VC[dCCC(dANG[N"/tt"LGL$1'"b/D$QG!Q$1'D$IH!I#041HSW#XH X.:)/O+ 
 	+U33UIF3UIF4eZHh	
	Nr#   r   c                     \ rS rSr% Sr\" \" S5      \" SSS9SS9rS	\	S
'   \" \" S5      \" SSS9SS9r
S	\	S'   \" \" S5      SSS9rS	\	S'   \" \" SS9S\S9rS\	S'   \" SS9rS\	S'   \" SS9rS\	S'   \" SS5      \" SS
5      4rS rg!)"AssetReferenceTag   r   r   rq   rf   rg   Tr   r+   r   rp   z	tags.nameRESTRICTtag_name    Fmanualr2   originr7   r9   added_atr   r   r   r   asset_reference_linkszMapped[Tag]tag ix_asset_reference_tags_tag_name*ix_asset_reference_tags_asset_reference_idr"   N)rY   rZ   r[   r\   r]   r   r   r   r   r^   r   r   r
   r   r   r   r   r   r   r_   r`   r"   r#   r$   r   r      s    *M&3r
(9=' 
 *sZjAtHk  (r
UHUFKU!.% 5+"H  /;+.VO+V#3JKCK 	0*=:<PQNr#   r   c                  |    \ rS rSr% Sr\" \" S5      SS9rS\S'   \	" SS	S
9r
S\S'   \	" SSSSS9rS\S'   SS jrSrg)Tag   r   rp   Tr   r+   rN   r   zasset_references,tags)rA   r   r   r   r   z4asset_reference_links,tag_links,tags,asset_reference)r   rA   r   r   rF   rc   c                "    SU R                    S3$ )Nz<Tag rR   rM   rS   s    r$   rU   Tag.__repr__   s    tyyk##r#   r"   NrW   )rY   rZ   r[   r\   r]   r   r   rN   r^   r   r   rc   rU   r`   r"   r#   r$   r   r      s\    M%fSktDD+D=I(>:  6B(G	62 $r#   r   ) 
__future__r   r    r   typingr   
sqlalchemyr   r   r   r	   r
   r   r   r   r   r   r   sqlalchemy.ormr   r   r   r   app.assets.helpersr   app.database.modelsr   r   r;   r   r   r   r"   r#   r$   <module>r      sy    "       H G * $ED EDjNT jNZ @ 2$$ $r#   