Ë
    uPêjÞ  ã                   ó   — d Z ddlmZmZ ddlmZmZmZ ddlm	Z	m
Z
mZmZmZmZ ddlmZ ddlmZ  ede¬«      Ze G d	„ d
e«      «       Ze G d„ de«      «       Zeeef   ez  ez  eeeef      z  Zdedeeef   fd„Z G d„ deee   «      Zy)z2
Base repository class with common functionality.
é    )ÚABCÚabstractmethod)ÚIterableÚMappingÚSequence)ÚAnyÚFinalÚGenericÚProtocolÚTypeVarÚruntime_checkable)Ú	BaseModel)ÚTableActionsÚT)Úboundc                   ó"   — e Zd Zdeeef   fd„Zy)ÚSupportsModelDumpÚreturnc                  ó   — y ©N© ©Úselfs    úi/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/repositories/base_repository.pyÚ
model_dumpzSupportsModelDump.model_dump   ó   � ó    N)Ú__name__Ú
__module__Ú__qualname__ÚdictÚstrÚobjectr   r   r   r   r   r      s   „ à2˜D  f Ñ-Ô2r   r   c                   ó"   — e Zd Zdeeef   fd„Zy)ÚSupportsDictr   c                  ó   — y r   r   r   s    r   r!   zSupportsDict.dict   r   r   N)r   r   r    r!   r"   r#   r   r   r   r%   r%      s   „ à,�d˜3 ˜;Ñ'Ô,r   r%   Úrecordr   c                 óÞ   — t        | t        «      r| j                  «       S t        | t        «      r| j	                  «       S t        | t
        «      r| S | D ��ci c]  \  }}||“Œ
 c}}S c c}}w )zAProject a database record into a mapping of column name to value.)Ú
isinstancer   r   r%   r!   r   )r'   ÚkeyÚvalues      r   Úrecord_to_dictr,      s]   € ä�&Ô+Ô,Ø× Ñ Ó"Ð"Ü�&œ,Ô'Ø�{‰{‹}ÐÜ�&œ'Ô"ØˆØ)/×0™:˜3 ˆC�‰JÓ0Ð0ùÓ0s   ÁA)c                   óÈ  — e Zd ZdZdefd„Zedefd„«       Zeede	e
   fd„«       «       Zeedee   fd„«       «       Zde
d	z  ded	z  fd
„Zdee
d	z     dee   fd„Zddededed	z  fd„Z	 	 	 	 ddeeef   d	z  ded	z  ded	z  deeef   d	z  dee   f
d„Zdeeef   defd„Zddedeeef   deded	z  fd„Zddededed	z  fd„Zddeeef   d	z  defd„Zddededefd„Zy	)ÚBaseRepositoryz)Abstract base class for all repositories.Úprisma_clientc                 ó   — || _         y r   )Ú_prisma_client)r   r/   s     r   Ú__init__zBaseRepository.__init__+   s
   € Ø+ˆÕr   r   c                 óH   — | j                   €t        d«      ‚| j                   S )NzFNo DB Connected. See - https://docs.litellm.ai/docs/proxy/virtual_keys)r1   ÚRuntimeErrorr   s    r   r/   zBaseRepository.prisma_client.   s&   € à×ÑÐ&ÜÐgÓhÐhØ×"Ñ"Ð"r   c                  ó   — y)z,Return the Prisma table for this repository.Nr   r   s    r   ÚtablezBaseRepository.table4   ó   € ð 	r   c                  ó   — y)z2Return the domain model class for this repository.Nr   r   s    r   Úmodel_classzBaseRepository.model_class:   r7   r   r'   Nc                 óP   — |€y| j                   j                  t        |«      «      S )z,Convert a database record to a domain model.N)r9   Úmodel_validater,   )r   r'   s     r   Ú	_to_modelzBaseRepository._to_model@   s&   € àˆ>ØØ×Ñ×.Ñ.¬~¸fÓ/EÓFÐFr   Úrecordsc                 óZ   — |D �cg c]  }|€Œ| j                  |«      x}€Œ|‘Œ c}S c c}w )z4Convert a list of database records to domain models.)r<   )r   r=   r'   Úmodels       r   Ú_to_model_listzBaseRepository._to_model_listF   s2   € à$+Öt˜&¨vÑ/AÐPT×P^ÑP^Ð_eÓPfÐGfÀuÑFs’ÒtÐtùÒts   …(�(¡(Úid_valueÚid_fieldc              ƒ   ó|   K  — | j                   j                  ||i¬«      ƒ d{  –—† }| j                  |«      S 7 Œ­w)z!Find a record by its primary key.©ÚwhereN)r6   Úfind_uniquer<   ©r   rA   rB   r'   s       r   Ú
find_by_idzBaseRepository.find_by_idJ   s:   è ø€ à"Ÿj™j×4Ñ4¸HÀhÐ;OÐ4ÓP×PˆØ�~‰~˜fÓ%Ð%ð Qúó   ‚"<¤:¥<rE   ÚskipÚtakeÚorderc              ƒ   óŽ   K  — | j                   j                  |||xs d|xs d¬«      ƒ d{  –—† }| j                  |«      S 7 Œ­w)z,Find multiple records matching the criteria.N)rK   rJ   rE   rL   )r6   Ú	find_manyr@   )r   rE   rJ   rK   rL   r=   s         r   rN   zBaseRepository.find_manyO   sR   è ø€ ð  $Ÿz™z×3Ñ3ØØØ’-˜4Ø’-˜4ð	  4ó  
÷ 
ˆð ×"Ñ" 7Ó+Ð+ð
ús   ‚+A­A®AÚdatac              ƒ   ó„   K  — | j                   j                  |¬«      ƒ d{  –—† }| j                  |«      }|€J ‚|S 7 Œ­w)zCreate a new record.)rO   N)r6   Úcreater<   )r   rO   r'   r?   s       r   rQ   zBaseRepository.create_   sD   è ø€ à"Ÿj™j×/Ñ/°TÐ/Ó:×:ˆØ—~‘~ fÓ-ˆØÐ Ð Ð Øˆð ;ús   ‚ A ¢>£A c              ƒ   ó~   K  — | j                   j                  ||i|¬«      ƒ d{  –—† }| j                  |«      S 7 Œ­w)zUpdate an existing record.)rE   rO   N)r6   Úupdater<   )r   rA   rO   rB   r'   s        r   rS   zBaseRepository.updatef   s=   è ø€ à"Ÿj™j×/Ñ/°xÀÐ6JÐQUÐ/ÓV×VˆØ�~‰~˜fÓ%Ð%ð Wús   ‚#=¥;¦=c              ƒ   ó|   K  — | j                   j                  ||i¬«      ƒ d{  –—† }| j                  |«      S 7 Œ­w)z#Delete a record by its primary key.rD   N)r6   Údeleter<   rG   s       r   rU   zBaseRepository.deletek   s:   è ø€ à"Ÿj™j×/Ñ/°xÀÐ6JÐ/ÓK×KˆØ�~‰~˜fÓ%Ð%ð LúrI   c              ƒ   óV   K  — | j                   j                  |¬«      ƒ d{  –—† S 7 Œ­w)z$Count records matching the criteria.rD   N)r6   Úcount)r   rE   s     r   rW   zBaseRepository.countp   s$   è ø€ à—Z‘Z×%Ñ%¨EÐ%Ó2×2Ð2Ð2ús   ‚ )¢'£)c              ƒ   ób   K  — | j                   j                  ||i¬«      ƒ d{  –—† }|duS 7 Œ­w)zCheck if a record exists.rD   N)r6   rF   rG   s       r   ÚexistszBaseRepository.existst   s6   è ø€ à"Ÿj™j×4Ñ4¸HÀhÐ;OÐ4ÓP×PˆØ˜TÐ!Ð!ð Qús   ‚"/¤-¥	/)Úid)NNNNr   )r   r   r    Ú__doc__r   r2   Úpropertyr/   r   r   ÚDbRecordr6   Útyper   r9   r<   r   Úlistr@   r"   rH   r   r#   ÚintrN   rQ   rS   rU   rW   ÚboolrY   r   r   r   r.   r.   (   sì  „ Ù3ð, có ,ð ð#˜sò #ó ð#ð
 Øð�| HÑ-ò ó ó ðð Øð˜T !™Wò ó ó ððG ¨4¡ð G°A¸±Hó Gðu h¨x¸$©Ñ&?ð uÀDÈÁGó uñ&¨ð &¸ð &ÀqÈ4Áxó &ð .2ØØØ*.ñ,à�s˜F�{Ñ# dÑ*ð,ð �D‰jð,ð �D‰jð	,ð
 �s˜C�xÑ  4Ñ'ð,ð 
ˆa‰ó,ð  ¨¨f¨Ñ!5ð ¸!ó ñ& Sð &°¸¸V¸Ñ0Dð &ÐPSð &Ð_`ÐcgÑ_gó &ñ
& Sð &°Cð &À1ÀtÁ8ó &ñ
3 ¨¨f¨Ñ!5¸Ñ!<ð 3Èó 3ñ" Sð "°Cð "À4ô "r   r.   N)r[   Úabcr   r   Úcollections.abcr   r   r   Útypingr   r	   r
   r   r   r   Úpydanticr   Ú%litellm.repositories.prisma_protocolsr   r   r   r%   r"   r#   Útupler]   r,   r.   r   r   r   ú<module>rh      sÄ   ðñ÷ $ß 7Ñ 7ß L× Lå å >áˆC�yÔ!€ð ô3˜ó 3ó ð3ð ô-�8ó -ó ð-ð �3˜�;ÑÐ"3Ñ3°lÑBÀXÈeÐTWÐY_ÐT_ÑN`ÑEaÑa€ð1˜8ð 1¨°°V°Ñ(<ó 1ôO"�S˜' !™*õ O"r   