
    +j"                    "   d dl mZ d dlZd dlmZ d dlmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZ d dlmZmZmZmZ d dlmZ d dlmZ  G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de          ZdS )    )annotationsN)datetime)Any)JSON
BigIntegerBooleanCheckConstraintDateTime
ForeignKeyIndexIntegerNumericStringText)Mappedforeignmapped_columnrelationship)get_utc_now)Basec                     e Zd ZU dZ e ed          dd           Zded<    e ed          d	          Zd
ed<    ee	dd          Z
ded<    e ed                    Zd
ed<    e ed          de          Zded<    eddd d dd          Zded<    eddd           ed d           ed!d"#          fZd(d&Zd'S ))Assetassets$   Tc                 B    t          t          j                              S Nstruuiduuid4     :/home/wildlama/comfy/ComfyUI/app/assets/database/models.py<lambda>zAsset.<lambda>       c$*,,6G6G r"   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                 P    t           j        t          t          j                  k    S r   )r   r*   r   r9   asset_idr!   r"   r#   r$   zAsset.<lambda>*   s    EH0G(H(HH r"   c                     t           j        gS r   )r9   r<   r!   r"   r#   r$   zAsset.<lambda>+   s    n56 r"   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namereturnr   c                <    d| j          d| j        pdd d          dS )Nz
<Asset id=z hash=    >)r*   r/   selfs    r#   __repr__zAsset.__repr__8   s,    DDGDDDIOSbS+ADDDDr"   NrM   r   )__name__
__module____qualname____tablename__r   r   r*   __annotations__r/   r   r2   r4   r
   r   r8   r   rE   r   r	   __table_args__rT   r!   r"   r#   r   r      s        M#mr

.G.G  B      -}VVC[[4HHHDHHHH+mJPQRRRJRRRR$1M&&++$>$>I>>>>#0=%   5+$ $ $J     0<|HH66#0 0 0J     	t444#[11)0GHHHNE E E E E Er"   r   c                     e Zd ZU dZdZ e ed          dd           Zded<    e ed           e	d	d
          d          Z
ded<    eed          Zded<    eed          Zded<    eedd          Zded<    eedd          Zded<    eedd          Zded<    e ed          dd          Zded<    e ed          d          Zded<    e ed           e	dd                     Zded!<    e ed"                    Zd#ed$<    e ed"          dd%          Zd#ed&<    e ed          dd%          Zded'<    e ed(          de          Zd)ed*<    e ed(          de          Zd)ed+<    e ed(          de          Zd)ed,<    e ed(          dd%          Z d-ed.<    e!d/d0e
gd12          Z"d3ed4<    e!d egd5 6          Z#d7ed8<    e!d9d:d;          Z$d<ed=<    e!d9d:dd>?          Z%d@edA<    e!dBdd1ddCD          Z&dEedF<    e'dGddH           e'dId           e'dJd           e'dKd           e'dLd           e'dMd           e'dNd*           e'dOd,           e'dPd.           e'dQd!           e'dRdd           e(dSdTU           e(dVdWU          fZ)d[dZZ*d%S )\r9   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                 B    t          t          j                              S r   r   r!   r"   r#   r$   zAssetReference.<lambda>G   r%   r"   r&   r)   r*   z	assets.idCASCADEondeleteFr,   r<   r.   	file_pathzMapped[int | None]mtime_nsr0   zMapped[bool]needs_verify
is_missingr   r1   enrichment_level   rO   owner_id   rL   asset_references.idzSET NULL
preview_idnone_as_nullzMapped[dict[str, Any] | None]user_metadataNsystem_metadatajob_idr5   r7   r8   
updated_atlast_access_timezMapped[datetime | None]
deleted_atr   rE   selectin)r?   rA   lazyzMapped[Asset]r:   c                     t           j        gS r   )r9   r*   r!   r"   r#   r$   zAssetReference.<lambda>w   s    ^./ r"   )rA   remote_sidezMapped[AssetReference | None]preview_refasset_referencer>   )r?   rB   rC   z Mapped[list[AssetReferenceMeta]]metadata_entriesztags,asset_references)r?   rB   rC   overlapsMapped[list[AssetReferenceTag]]	tag_linksasset_reference_tagsz4tag_links,asset_reference_links,asset_references,tag)	secondaryr?   ru   viewonlyr{   zMapped[list[Tag]]tagsuq_asset_references_file_pathrG   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_nonnegrK   z/enrichment_level >= 0 AND enrichment_level <= 2ck_ar_enrichment_level_rangerM   r   c                R    | j         r
d| j         nd}d| j         d| j        | dS )Nz path=rO   z<AssetReference id=z name=rQ   )rb   r*   rL   )rS   	path_parts     r#   rT   zAssetReference.__repr__   s@    37>I/T^///r	MTWMMDIMMMMMr"   rU   )+rV   rW   rX   __doc__rY   r   r   r*   rZ   r   r<   r   rb   r   rc   r   rd   re   r   rf   rh   rL   rk   r   rn   ro   rp   r
   r   r8   rq   rr   rs   r   r:   rx   rz   r}   r   r   r	   r[   rT   r!   r"   r#   r9   r9   <   s          'M#mr

.G.G  B     *Mr

JJ{Y???%  H    
 %2M$$F$F$FIFFFF#0=d#K#K#KHKKKK!.wPU!V!V!VLVVVV,}WueTTTJTTTT$1M'EST$U$U$UUUUU *M&&++rRRRHRRRR%ffSkkEBBBDBBBB%2]r

JJ4zJJJ& &J     4A=$4 4M     6C]$$6 6 6O     "/vvbzzDRV!W!W!WFWWWW#0=%   5+$ $ $J     $1=%   5+$ $ $J     *7%   5+* * *     +8-%   4+ + +J     (<#Z	  E     2> \//2 2 2K     :F(#: : :     2>(#(	2 2 2I     +l()G  D     	-{4HHH,j99,j99(&11.==46HII.==46HII.==.==.
FCC3:N	
 	
 	
 	=/	
 	
 	
N*N N N N N Nr"   r9   c                  $   e Zd ZU dZ e ed           edd          d          Zded	<    e ed
          d          Z	ded<    ee
dd          Zded<    e ed          d          Zded<    e edd          d          Zded<    eed          Zded<    e ed          d          Zded<    ed          Zded <    ed!d           ed"dd           ed#dd           ed$dd           ed%d&'          fZd(S ))AssetReferenceMetaasset_reference_metar   rj   r_   r`   Tr'   r)   asset_reference_idr+   keyr   r&   r1   ordinali   r,   r.   val_str&   
   zMapped[float | None]val_numzMapped[bool | None]val_boolrl   zMapped[Any | None]val_jsonrz   r?   Mapped[AssetReference]ry   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_valuerK   N)rV   rW   rX   rY   r   r   r   r   rZ   r   r   r   r   r   r   r   r   r   r   r   ry   r   r	   r[   r!   r"   r#   r   r      s        *M&3mr


(9===' ' '    
 %}VVC[[dCCCCCCCC(=dANNNGNNNN"/-tt"L"L"LGLLLL$1M''"b//D$Q$Q$QGQQQQ$1M'D$I$I$IHIIII#0=41H1H1HSW#X#X#XHXXXX.:l)/ / /O    
 	+U333UIFF3UIFF4eZHHh	
 	
 	
	NNNr"   r   c                     e Zd ZU dZ e ed           edd          d          Zded	<    e ed
           edd          d          Z	ded<    e ed          dd          Z
ded<    e ed          de          Zded<    ed          Zded<    ed          Zded<    edd           edd	          fZdS ) AssetReferenceTagr~   r   rj   r_   r`   Tr   r)   r   ri   z	tags.nameRESTRICTtag_name    Fmanualr0   originr5   r7   added_atr}   r   r   ry   asset_reference_linkszMapped[Tag]tag ix_asset_reference_tags_tag_name*ix_asset_reference_tags_asset_reference_idN)rV   rW   rX   rY   r   r   r   r   rZ   r   r   r
   r   r   r   ry   r   r   r[   r!   r"   r#   r   r      s~        *M&3mr


(9===' ' '    
 *MsZZjAAAt  H     (-r

UHUUUFUUUU!.%   5+" " "H     /;l+.V.V.VOVVVV#|3JKKKCKKKK 	0*==:<PQQNNNr"   r   c                      e Zd ZU dZ e ed          d          Zded<    edd	          Z	d
ed<    edddd          Z
ded<   ddZdS )Tagr   ri   Tr   r)   rL   r   zasset_references,tags)r?   r{   r|   r   r~   z4asset_reference_links,tag_links,tags,asset_reference)r   r?   r   r{   rD   r]   rM   r   c                    d| j          dS )Nz<Tag rQ   rK   rR   s    r#   rT   zTag.__repr__   s    #ty####r"   NrU   )rV   rW   rX   rY   r   r   rL   rZ   r   r   r]   rT   r!   r"   r#   r   r      s         M%ffSkktDDDDDDDD=I\(> > >     6B\(G	6 6 6    $ $ $ $ $ $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   r9   r   r   r   r!   r"   r#   <module>r      s   " " " " " "                                       H G G G G G G G G G G G * * * * * * $ $ $ $ $ $E E E E ED E E EDjN jN jN jN jNT jN jN jNZ       @       2$ $ $ $ $$ $ $ $ $ $r"   