ó
    À‘´jÌ  ã                   óª   • S r SSKJr  SSKJrJr  SSKJr  SSK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\5      r " S	 S
\5      r " S S\5      rg)z)SQLAlchemy models for Quber RAG database.é    )Údatetime)ÚAnyÚOptional)ÚVector)ÚJSONÚ
ForeignKeyÚIntegerÚStringÚTextÚUniqueConstraint)ÚDeclarativeBaseÚMappedÚmapped_columnÚrelationshipc                   ó   • \ rS rSrSrSrg)ÚBaseé   z#Base class for all database models.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    Ú-/home/mande/repo/quber/src/quber/db/models.pyr   r      s   † Ù-âr   r   c                   ó¶  • \ rS rSr% SrSr\" \SS9r\	\
   \S'   \" \" S5      SSSS	9r\	\   \S
'   \" SS9r\	\   \S'   \" \SS9r\	\\
      \S'   \" \SS9r\	\\
      \S'   \" \SS9r\	\\      \S'   \" \" S5      SS9r\	\\      \S'   \" \" S5      SS9r\	\\      \S'   \" \R0                  S9r\	\   \S'   \" SSSS9r\	\S      \S'   S\4S jrSrg)ÚDocumenté   z6Represents a processed document with extracted tables.Ú	documentsT©Úprimary_keyÚidéÿ   F)ÚnullableÚuniqueÚindexÚfilename©r%   Úextraction_dateÚtotal_pagesÚtotal_tablesÚexecutive_summaryé2   Úmodel_provideréd   Úmodel©ÚdefaultÚ
created_atÚExtractedTableÚdocumentzall, delete-orphan)Úback_populatesÚcascadeÚtablesÚreturnc                 óV   • SU R                    SU R                   SU R                   S3$ )Nz<Document(id=z, filename='z
', tables=ú)>)r#   r(   r,   ©Úselfs    r   Ú__repr__ÚDocument.__repr__%   s-   € Ø˜tŸw™w˜i |°D·M±M°?À*ÈT×M^ÑM^ÐL_Ð_aÐbÐbr   r   N)r   r   r   r   r   Ú__tablename__r   r	   r#   r   ÚintÚ__annotations__r
   r(   Ústrr*   r   r+   r   r,   r   r-   r/   r1   Únowr4   r   r9   Úlistr?   r   r   r   r   r   r      s(  ‡ Ù@à€Má# G¸Ñ>€Bˆˆs‰Ó>Ù)©&°«+ÀÈdÐZ^Ñ_€Hˆf�S‰kÓ_Ù(5¸uÑ(E€O�V˜HÑ%ÓEÙ)6°wÈÑ)N€K�˜ ™Ñ&ÓNÙ*7¸È$Ñ*O€L�&˜ #™Ñ'ÓOÙ/<¸TÈDÑ/QÐ�v˜h s™mÑ,ÓQÙ,9¹&À»*ÈtÑ,T€N�F˜8 C™=Ñ)ÓTÙ#0±¸³ÀtÑ#L€Eˆ6�(˜3‘-Ñ ÓLÙ#0¸¿¹Ñ#F€J��xÑ ÓFñ .:Ø¨Ð=Qñ.€FˆF�4Ð(Ñ)Ñ*ó ðc˜#÷ cr   r   c                   ó2  • \ rS rSr% SrSr\" SSSS94r\" \	SS	9r
\\   \S
'   \" \" SSS9SS9r\\   \S'   \" \	SS9r\\   \S'   \" \	SS9r\\   \S'   \" \" S5      SS9r\\\      \S'   \" \SS9r\\\      \S'   \" \SS9r\\\      \S'   \" \SS9r\\\      \S'   \" \SS9r\\\      \S'   \" \SS9r\\\      \S'   \" \SS9r\\\\\4         \S'   \" \SS9r \\\!\         \S'   \" \SS9r"\\\!\#         \S'   \" \" S5      SS9r$\\\      \S'   \" \SS9r%\\\\\4         \S'   \" \&" S5      SS9r'\\\      \S '   \" \&" S5      SS9r(\\\      \S!'   \" \)RT                  S"9r+\\)   \S#'   \," S$S%S&9r-\S$   \S''   S(\4S) jr.S*r/g+),r5   é)   zBRepresents an extracted table with embeddings for semantic search.Úextracted_tablesÚdocument_idÚtable_idÚuq_document_table)ÚnameTr!   r#   zdocuments.idÚCASCADE)Úondelete)r'   Fr)   Úpage_numberr.   Ú	extractorÚprocedural_titleÚ	llm_titleÚllm_subtitleÚllm_descriptionÚtable_markdownÚheadersÚ	footnotesÚbboxé   ÚflavorÚtable_metadatai   Útitle_embeddingÚdescription_embeddingr2   r4   r   r9   )r7   r6   r:   c           	      óp   • SU R                    SU R                   SU R                   SU R                   S3	$ )Nz<ExtractedTable(id=z, document_id=z, table_id=z, page=r<   )r#   rJ   rK   rP   r=   s    r   r?   ÚExtractedTable.__repr__K   sC   € à! $§'¡' ¨.¸×9IÑ9IÐ8Jð KØŸ™� g¨d×.>Ñ.>Ð-?¸rðCð	
r   r   N)0r   r   r   r   r   rA   r   Ú__table_args__r   r	   r#   r   rB   rC   r   rJ   rK   rP   r
   rQ   r   rD   r   rR   rS   rT   rU   rV   r   rW   Údictr   rX   rF   rY   Úfloatr[   r\   r   r]   r^   r   rE   r4   r   r6   r?   r   r   r   r   r5   r5   )   s<  ‡ ÙLà&€MÙ& }°jÐGZÑ[Ð]€Ná# G¸Ñ>€Bˆˆs‰Ó>Ù,©Z¸ÐQZÑ-[ÐcgÑh€K�˜‘ÓhÙ)¨'¸EÑB€Hˆf�S‰kÓBÙ,¨W¸uÑE€K�˜‘ÓEñ (5±V¸B³ZÈ$Ñ'O€Iˆv�h˜s‘mÑ$ÓOÙ.;¸DÈ4Ñ.PÐ�f˜X c™]Ñ+ÓPÙ'4°TÀDÑ'I€Iˆv�h˜s‘mÑ$ÓIÙ*7¸ÀtÑ*L€L�&˜ #™Ñ'ÓLÙ-:¸4È$Ñ-O€O�V˜H S™MÑ*ÓOÙ,9¸$ÈÑ,N€N�F˜8 C™=Ñ)ÓNÙ0=¸dÈTÑ0R€GˆV�H˜T # s (™^Ñ,Ñ-ÓRÙ-:¸4È$Ñ-O€Iˆv�h˜t C™yÑ)Ñ*ÓOÙ*7¸ÀtÑ*L€Dˆ&�˜$˜u™+Ñ&Ñ
'ÓLÙ$1±&¸³*ÀtÑ$L€FˆF�8˜C‘=Ñ!ÓLÙ7DÀTÐTXÑ7Y€N�F˜8 D¨¨c¨¡NÑ3Ñ4ÓYñ .;¹6À$»<ÐRVÑ-W€O�V˜H S™MÑ*ÓWÙ3@ÁÈÃÐX\Ñ3]Ð˜6 (¨3¡-Ñ0Ó]á#0¸¿¹Ñ#F€J��xÑ ÓFñ $0°
È8Ñ#T€Hˆf�ZÑ ÓTð
˜#÷ 
r   r5   N)r   r   Útypingr   r   Úpgvector.sqlalchemyr   Ú
sqlalchemyr   r   r	   r
   r   r   Úsqlalchemy.ormr   r   r   r   r   r   r5   r   r   r   Ú<module>rh      sC   ðÙ /å ß  å &ß P× Pß OÓ Oô	ˆ?ô 	ôcˆtô cô0&
�Tõ &
r   