Ë
    uPêj$;  ã                   ó¼   — U d Z ddlZddlmZmZ ddlmZ ddlmZmZ ddl	m
Z
 ddlmZmZmZ ddlmZ erdd	lmZ ddlm
Z dd
lmZ dZeed<    G d„ dee
   «      Zy)zT
VerificationToken repository for database operations on LiteLLM_VerificationToken.
é    N)ÚMappingÚSequence)Údatetime)ÚTYPE_CHECKINGÚFinal©ÚLiteLLM_VerificationToken)ÚBaseRepositoryÚDbRecordÚrecord_to_dict)ÚTableActions)Ú LiteLLM_DeletedVerificationToken)ÚPrismaClient)	ÚaliasesÚconfigÚpermissionsÚmetadataÚmodel_spendÚmodel_max_budgetÚrouter_settingsÚbudget_limitsÚlitellm_budget_tableÚ_JSON_ENCODED_TOKEN_FIELDSc            7       ó  ‡ — e Zd ZdZed;ˆ fd„«       Zeded   fd„«       Zeded   fd„«       Zede	e
   fd„«       Zd	ed
z  de
d
z  fd„Zd<dedede
d
z  fˆ fd„Zdede
d
z  fd„Zdedee
   fd„Zdedee
   fd„Zdedee
   fd„Zdee
   fd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d=deded
z  ded
z  ded
z  ded
z  dee   d
z  deeef   d
z  deeef   d
z  ded
z  ded
z  ded
z  ded
z  ded
z  d eeef   d
z  d!ed
z  d"ed
z  d#ed
z  d$ee   d
z  d%ee   d
z  d&eeef   d
z  d'ed
z  d(ed
z  d)ed
z  d*ee   d
z  d+ed
z  deeef   f4d,„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d=deded
z  ded
z  ded
z  ded
z  dee   d
z  deeef   d
z  deeef   d
z  ded
z  ded
z  ded
z  ded
z  ded
z  d eeef   d
z  d!ed
z  d"ed
z  d#ed
z  d$ee   d
z  d%ee   d
z  d&eeef   d
z  d'ed
z  d(ed
z  d)ed
z  d*ee   d
z  d+ed
z  de
f4d-„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d>ded.ed
z  ded
z  ded
z  ded
z  ded
z  dee   d
z  deeef   d
z  deeef   d
z  ded
z  d eeef   d
z  d!ed
z  d"ed
z  d#ed
z  d$ee   d
z  d%ee   d
z  d&eeef   d
z  d/ed
z  d)ed
z  d*ee   d
z  de
d
z  f*d0„Z	 	 	 d?ded1ed
z  d2ed
z  d3ed
z  de
d
z  f
d4„Z de
deeef   fd5„Z!ded6ede
d
z  fd7„Z"dede
d
z  fd8„Z#d@ded.ed
z  de
d
z  fd9„Z$d@ded.ed
z  de
d
z  fd:„Z%ˆ xZ&S )AÚVerificationTokenRepositoryz@Repository for verification token (API key) database operations.Úreturnc                 ó   •— t         ‰| �  }|S ©N)ÚsuperÚprisma_client)Úselfr    Ú	__class__s     €úw/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/repositories/verification_token_repository.pyr    z)VerificationTokenRepository.prisma_client.   s   ø€ ä-2©WÑ-BˆØÐó    ÚPrismaVerificationTokenc                 óB   — | j                   j                  j                  S r   )r    ÚdbÚlitellm_verificationtoken©r!   s    r#   Útablez!VerificationTokenRepository.table3   s   € à×!Ñ!×$Ñ$×>Ñ>Ð>r$   ÚPrismaDeletedVerificationTokenc                 óB   — | j                   j                  j                  S r   )r    r'   Ú litellm_deletedverificationtokenr)   s    r#   Údeleted_tablez)VerificationTokenRepository.deleted_table7   s   € à×!Ñ!×$Ñ$×EÑEÐEr$   c                 ó   — t         S r   r   r)   s    r#   Úmodel_classz'VerificationTokenRepository.model_class;   s   € ä(Ð(r$   ÚrecordNc           	      óL  — |€yt        |«      j                  «       D ��ci c]5  \  }}||t        v r%t        |t        «      rt        j                  |«      n|“Œ7 }}}|j                  d«      }|j                  d«      €|€|ni |¥d|i¥}t        j                  |«      S c c}}w )z7Convert a database record to a VerificationToken model.NÚorganization_idÚorg_id)
r   Úitemsr   Ú
isinstanceÚstrÚjsonÚloadsÚgetr	   Úmodel_validate)r!   r1   ÚfieldÚvalueÚdecodedr3   Údatas          r#   Ú	_to_modelz%VerificationTokenRepository._to_model?   s¸   € àˆ>Øô !/¨vÓ 6× <Ñ <Ó >÷
á��uð ¨Ô1KÑ(KÔPZÐ[`ÔbeÔPf”4—:‘:˜eÔ$ÐlqÑqð
ˆñ 
ð ")§¡Ð->Ó!?ˆð �{‰{˜8Ó$Ð0°OÐ4Kñ à7�GÐ7˜X Ñ7ð 	ô )×7Ñ7¸Ó=Ð=ùó
s    :B ÚtokenÚid_fieldc              ƒ   ó@   •K  — t         ‰| �  ||«      ƒ d {  –—† S 7 Œ­wr   )r   Ú
find_by_id)r!   rA   rB   r"   s      €r#   rD   z&VerificationTokenRepository.find_by_idQ   s   øè ø€ Ü‘WÑ'¨¨xÓ8×8Ð8Ð8ús   ƒ—˜Ú	key_aliasc              ƒ   óˆ   K  — | j                   j                  d|i¬«      ƒ d{  –—† }|r| j                  |d   «      S y7 Œ­w)zFind a token by key alias.rE   ©ÚwhereNr   )r*   Ú	find_manyr@   )r!   rE   Úrecordss      r#   Úfind_by_aliasz)VerificationTokenRepository.find_by_aliasT   sF   è ø€ àBFÇ*Á*×BVÑBVÐ^iÐktÐ]uÐBVÓBv×<vˆÙØ—>‘> '¨!¡*Ó-Ð-Øð =wús   ‚"A¤A ¥AÚuser_idc              ƒ   ó|   K  — | j                   j                  d|i¬«      ƒ d{  –—† }| j                  |«      S 7 Œ­w)z$Find all tokens belonging to a user.rL   rG   N©r*   rI   Ú_to_model_list)r!   rL   rJ   s      r#   Úfind_by_user_idz+VerificationTokenRepository.find_by_user_id[   ó>   è ø€ àBFÇ*Á*×BVÑBVÐ^gÐipÐ]qÐBVÓBr×<rˆØ×"Ñ" 7Ó+Ð+ð =súó   ‚"<¤:¥<Úteam_idc              ƒ   ó|   K  — | j                   j                  d|i¬«      ƒ d{  –—† }| j                  |«      S 7 Œ­w)z$Find all tokens belonging to a team.rS   rG   NrN   )r!   rS   rJ   s      r#   Úfind_by_team_idz+VerificationTokenRepository.find_by_team_id`   rQ   rR   Ú
project_idc              ƒ   ó|   K  — | j                   j                  d|i¬«      ƒ d{  –—† }| j                  |«      S 7 Œ­w)z'Find all tokens belonging to a project.rV   rG   NrN   )r!   rV   rJ   s      r#   Úfind_by_project_idz.VerificationTokenRepository.find_by_project_ide   s>   è ø€ àBFÇ*Á*×BVÑBVÐ^jÐlvÐ]wÐBVÓBx×<xˆØ×"Ñ" 7Ó+Ð+ð =yúrR   c              ƒ   ó¶   K  — | j                   j                  ddiddiddt        j                  «       iigdœ¬«      ƒ d{  –—† }| j	                  |«      S 7 Œ­w)z2Find all active (non-expired, non-blocked) tokens.ÚnotTÚexpiresNÚgt)ÚblockedÚORrG   )r*   rI   r   ÚutcnowrO   )r!   rJ   s     r#   Úfind_active_tokensz.VerificationTokenRepository.find_active_tokensj   si   è ø€ àBFÇ*Á*×BVÑBVà! 4˜=Ø! 4Ð(¨9°t¼X¿_¹_Ó=NÐ6OÐ*PÐQñð CWó C
÷ =
ˆð ×"Ñ" 7Ó+Ð+ð=
ús   ‚?AÁAÁAÚkey_nameÚ
max_budgetr[   Úmodelsr   r   Úagent_idÚmax_parallel_requestsr   Ú	tpm_limitÚ	rpm_limitÚbudget_durationÚallowed_cache_controlsÚallowed_routesr   r4   Ú
created_byÚobject_permission_idÚaccess_group_idsÚ	budget_idc                 ól  — ||||dœ}i d|“d|“d|“d|“d|“d|“d|	“d	|
“d
|“d|“d|“d|“d|“d|“d|“d|“d|“||dœ¥}|j                  «       D ��ci c]  \  }}|€Œ	||“Œ }}}|j                  «       D ]   \  }} | €Œ	t        j                  | «      ||<   Œ" |�||d<   |�
||d<   ||d<   |S c c}}w )z)Build data dictionary for token creation.)r   r   r   r   rA   ra   rE   rb   r[   rc   rL   rS   rd   rV   re   rf   rg   rh   ri   rj   rl   )rm   rn   r3   rk   Ú
updated_by)r5   r8   Údumps)!r!   rA   ra   rE   rb   r[   rc   r   r   rL   rS   rd   rV   re   r   rf   rg   rh   ri   rj   r   r4   rk   rl   rm   rn   Újson_fieldsÚsimple_fieldsÚkÚvr?   ÚkeyÚvals!                                    r#   Ú_build_token_dataz-VerificationTokenRepository._build_token_datat   s�  € ð< ØØ Ø&ñ	
ˆð 
Ø�Uð 
à˜ð 
ð ˜ð 
ð ˜*ð	 
ð
 �wð 
ð �fð 
ð �wð 
ð �wð 
ð ˜ð 
ð ˜*ð 
ð $Ð%:ð 
ð ˜ð 
ð ˜ð 
ð ˜ð 
ð %Ð&<ð 
ð  ˜nð! 
ð" #Ð$8ð# 
ð$ !1Ø"ò' 
ˆð* <I×;NÑ;NÓ;P×)b±4°1°aÐTUÑTa¨!¨Q©$Ð)bˆÑ)bØ#×)Ñ)Ó+ò 	,‰HˆC�Ø‰Ü ŸJ™J s›O��S’	ð	,ð ÐØ&,ˆDÐ"Ñ#ØÐ!Ø!+ˆD�ÑØ!+ˆD�ÑØˆùó *cs   Á
B0Á B0c              ƒ   ó”   K  — | j                  |||||||||	|
|||||||||||||||¬«      }| j                  |«      ƒ d{  –—† S 7 Œ­w)z Create a new verification token.)rA   ra   rE   rb   r[   rc   r   r   rL   rS   rd   rV   re   r   rf   rg   rh   ri   rj   r   r4   rk   rl   rm   rn   N)rx   Úcreate)r!   rA   ra   rE   rb   r[   rc   r   r   rL   rS   rd   rV   re   r   rf   rg   rh   ri   rj   r   r4   rk   rl   rm   rn   r?   s                              r#   Úcreate_tokenz(VerificationTokenRepository.create_token·   s   è ø€ ð: ×,Ñ,ØØØØ!ØØØØØØØØ!Ø"7ØØØØ+Ø#9Ø)Ø#ØØ!Ø!5Ø-Øð3 -ó 
ˆð6 —[‘[ Ó&×&Ð&Ð&ús   ‚?AÁAÁArp   r]   c              ƒ   óì  K  — i }|�||d<   |�||d<   |�||d<   |�||d<   |�||d<   |�||d<   |�t        j                  |«      |d<   |	�t        j                  |	«      |d	<   |
�|
|d
<   |�t        j                  |«      |d<   |�||d<   |�||d<   |�||d<   |�||d<   |�||d<   |�t        j                  |«      |d<   |�||d<   |�||d<   |�||d<   | j                  ||d¬«      ƒ d{  –—† S 7 Œ­w)zUpdate a verification token.Nrp   ra   rE   rb   r[   rc   r   r   re   r   rf   rg   rh   ri   rj   r   r]   rl   rm   rA   ©rB   )r8   rq   Úupdate)r!   rA   rp   ra   rE   rb   r[   rc   r   r   re   r   rf   rg   rh   ri   rj   r   r]   rl   rm   r?   s                         r#   Úupdate_tokenz(VerificationTokenRepository.update_tokenñ   s}  è ø€ ð0 *,ˆØÐ!Ø!+ˆD�ÑØÐØ'ˆD�ÑØÐ Ø )ˆD�ÑØÐ!Ø!+ˆD�ÑØÐØ%ˆD�‰OØÐØ#ˆD�‰NØÐÜ"Ÿj™j¨Ó1ˆD�‰OØÐÜ!ŸZ™Z¨Ó/ˆD�‰NØ Ð,Ø,AˆDÐ(Ñ)ØÐÜ#Ÿz™z¨(Ó3ˆD�ÑØÐ Ø )ˆD�ÑØÐ Ø )ˆD�ÑØÐ&Ø&5ˆDÐ"Ñ#Ø!Ð-Ø-CˆDÐ)Ñ*ØÐ%Ø%3ˆDÐ!Ñ"ØÐ"Ü"&§*¡*¨[Ó"9ˆD�ÑØÐØ%ˆD�‰OØÐ+Ø+?ˆDÐ'Ñ(ØÐ'Ø'7ˆDÐ#Ñ$à—[‘[ ¨°w�[Ó?×?Ð?Ð?ús   ‚C+C4Ã-C2Ã.C4Ú
deleted_byÚdeleted_by_api_keyÚlitellm_changed_byc              ƒ   ó  K  — | j                  |«      ƒ d{  –—† }|€y| j                  |«      }||d<   ||d<   ||d<   t        j                  «       |d<   | j                  j
                  j                  «       4 ƒd{  –—† }|j                  j                  |¬«      ƒ d{  –—†  |j                  j                  d|i¬«      ƒ d{  –—†  ddd«      ƒd{  –—†  |S 7 ŒÇ7 Œb7 Œ@7 Œ7 Œ# 1 ƒd{  –—†7  sw Y   |S xY w­w)	z™Delete a token and archive it to the deleted tokens table.

        Uses a transaction to ensure atomicity of the archive-then-delete operation.
        Nr€   r�   r‚   Ú
deleted_at)r?   rA   rG   )rD   Ú_build_archive_datar   r_   r    r'   Útxr-   rz   r(   Údelete)r!   rA   r€   r�   r‚   Útoken_recordÚarchive_datar†   s           r#   Údelete_tokenz(VerificationTokenRepository.delete_token3  s  è ø€ ð %)§O¡O°EÓ$:×:ˆØÐØà"×6Ñ6°|ÓDˆØ%/ˆ�\Ñ"Ø-?ˆÐ)Ñ*Ø-?ˆÐ)Ñ*Ü%-§_¡_Ó%6ˆ�\Ñ"à×%Ñ%×(Ñ(×+Ñ+Ó-÷ 	Nð 	N°Ø×5Ñ5×<Ñ<À,Ð<ÓO×OÐOØ×.Ñ.×5Ñ5¸WÀeÐ<LÐ5ÓM×MÐM÷	N÷ 	Nð Ðð ;øð	NøØOøØMøð	Nø÷ 	N÷ 	Nð 	Nð Ðüs|   ‚C?—C˜A&C?Á>C!Á?C?Â C)Â"C#Â#%C)ÃC%Ã	C)ÃC?ÃC'ÃC?Ã!C?Ã#C)Ã%C)Ã'C?Ã)C<Ã/C2Ã0C<Ã7C?c                 óä   — |j                  d¬«      }dD ]  }|j                  |d«       Œ |j                  dd«      }|�||d<   g d¢}|D ]"  }||v sŒt        j                  ||   «      ||<   Œ$ |S )a@  Build archive data with only columns present in LiteLLM_DeletedVerificationToken.

        Serializes JSON columns to strings (the archive table stores them as JSON
        columns the same way the live table does) and maps ``org_id`` onto the
        ``organization_id`` column so the foreign key is preserved.
        T)Úexclude_none)Úobject_permissionr   r   Nr4   r3   )r   r   r   r   r   r   r   )Ú
model_dumpÚpopr8   rq   )r!   rA   r?   r<   r4   rr   s         r#   r…   z/VerificationTokenRepository._build_archive_dataN  s“   € ð */×)9Ñ)9ÀtÐ)9Ó)LˆØSò 	"ˆEØ�H‰H�U˜DÕ!ð	"ð Ÿ™ ¨4Ó0ˆØÐØ&,ˆDÐ"Ñ#ò
ˆð !ò 	6ˆEØ˜Š}Ü"Ÿj™j¨¨e©Ó5��U’ð	6ð ˆr$   Úspendc              ƒ   óJ   K  — | j                  |d|id¬«      ƒ d{  –—† S 7 Œ­w)zUpdate token spend.r�   rA   r}   N©r~   )r!   rA   r�   s      r#   Úupdate_spendz(VerificationTokenRepository.update_spendk  s&   è ø€ à—[‘[ ¨°%Ð(8À7�[ÓK×KÐKÐKús   ‚#œ!�#c              ƒ   ón   K  — | j                  |dt        j                  «       id¬«      ƒ d{  –—† S 7 Œ­w)z!Update the last_active timestamp.Úlast_activerA   r}   N)r~   r   r_   )r!   rA   s     r#   Úupdate_last_activez.VerificationTokenRepository.update_last_activeo  s.   è ø€ à—[‘[ ¨¼¿¹Ó8IÐ(JÐU\�[Ó]×]Ð]Ð]ús   ‚,5®3¯5c              ƒ   ó\   K  — ddi}|�||d<   | j                  ||d¬«      ƒ d{  –—† S 7 Œ­w)zBlock a token.r]   TNrp   rA   r}   r’   ©r!   rA   rp   r?   s       r#   Úblock_tokenz'VerificationTokenRepository.block_tokens  s;   è ø€ à*3°TÐ):ˆØÐ!Ø!+ˆD�ÑØ—[‘[ ¨°w�[Ó?×?Ð?Ð?úó   ‚#,¥*¦,c              ƒ   ó\   K  — ddi}|�||d<   | j                  ||d¬«      ƒ d{  –—† S 7 Œ­w)zUnblock a token.r]   FNrp   rA   r}   r’   r˜   s       r#   Úunblock_tokenz)VerificationTokenRepository.unblock_tokenz  s;   è ø€ à*3°UÐ);ˆØÐ!Ø!+ˆD�ÑØ—[‘[ ¨°w�[Ó?×?Ð?Ð?úrš   )r   r   )rA   )NNNNNNNNNNNNNNNNNNNNNNNN)NNNNNNNNNNNNNNNNNNN)NNNr   )'Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr    r   r*   r.   Útyper	   r0   r   r@   r7   rD   rK   ÚlistrP   rU   rX   r`   Úfloatr   Údictr   ÚobjectÚintrx   r{   Úboolr   rŠ   r…   r“   r–   r™   rœ   Ú__classcell__)r"   s   @r#   r   r   +   sþ  ø„ ÙJàôó ðð ð?�|Ð$=Ñ>ò ?ó ð?ð ðF˜|Ð,LÑMò Fó ðFð ð)˜TÐ";Ñ<ò )ó ð)ð> ¨4¡ð >Ð4MÐPTÑ4Tó >ñ$9 cð 9°Sð 9ÐG`ÐcgÑGgõ 9ð¨Sð Ð5NÐQUÑ5Uó ð,¨Sð ,°TÐ:SÑ5Tó ,ð
,¨Sð ,°TÐ:SÑ5Tó ,ð
,°3ð ,¸4Ð@YÑ;Zó ,ð
,¨$Ð/HÑ*Ió ,ð  $Ø $Ø#'Ø#'Ø#'Ø)-Ø.2Ø"Ø"Ø#Ø!%Ø,0Ø04Ø $Ø $Ø&*Ø37Ø+/Ø37Ø!Ø!%Ø+/Ø-1Ø $ñ5AàðAð ˜‘*ðAð ˜‘:ð	Að
 ˜D‘LðAð ˜D‘ðAð �S‘	˜DÑ ðAð �c˜3�h‘ $Ñ&ðAð ˜˜V˜Ñ$ tÑ+ðAð �t‘ðAð �t‘ðAð ˜‘*ðAð ˜$‘JðAð  # T™zðAð ˜#˜v˜+Ñ&¨Ñ-ðAð  ˜‘:ð!Að" ˜‘:ð#Að$ ˜t™ð%Að& !% S¡	¨DÑ 0ð'Að( ˜S™	 DÑ(ð)Að* ˜S &˜[Ñ)¨DÑ0ð+Að, �d‘
ð-Að. ˜$‘Jð/Að0 " D™jð1Að2 ˜s™) dÑ*ð3Að4 ˜‘:ð5Að6 
ˆc�6ˆkÑ	ó7AðL  $Ø $Ø#'Ø#'Ø#'Ø)-Ø.2Ø"Ø"Ø#Ø!%Ø,0Ø04Ø $Ø $Ø&*Ø37Ø+/Ø37Ø!Ø!%Ø+/Ø-1Ø $ñ58'àð8'ð ˜‘*ð8'ð ˜‘:ð	8'ð
 ˜D‘Lð8'ð ˜D‘ð8'ð �S‘	˜DÑ ð8'ð �c˜3�h‘ $Ñ&ð8'ð ˜˜V˜Ñ$ tÑ+ð8'ð �t‘ð8'ð �t‘ð8'ð ˜‘*ð8'ð ˜$‘Jð8'ð  # T™zð8'ð ˜#˜v˜+Ñ&¨Ñ-ð8'ð  ˜‘:ð!8'ð" ˜‘:ð#8'ð$ ˜t™ð%8'ð& !% S¡	¨DÑ 0ð'8'ð( ˜S™	 DÑ(ð)8'ð* ˜S &˜[Ñ)¨DÑ0ð+8'ð, �d‘
ð-8'ð. ˜$‘Jð/8'ð0 " D™jð18'ð2 ˜s™) dÑ*ð38'ð4 ˜‘:ð58'ð6 
#ó78'ðz "&Ø#Ø $Ø#'Ø#'Ø#'Ø)-Ø.2Ø,0Ø04Ø $Ø $Ø&*Ø37Ø+/Ø37Ø#Ø+/Ø-1ñ+@@àð@@ð ˜$‘Jð@@ð ˜‘*ð	@@ð
 ˜‘:ð@@ð ˜D‘Lð@@ð ˜D‘ð@@ð �S‘	˜DÑ ð@@ð �c˜3�h‘ $Ñ&ð@@ð ˜˜V˜Ñ$ tÑ+ð@@ð  # T™zð@@ð ˜#˜v˜+Ñ&¨Ñ-ð@@ð ˜‘:ð@@ð ˜‘:ð@@ð ˜t™ð@@ð  !% S¡	¨DÑ 0ð!@@ð" ˜S™	 DÑ(ð#@@ð$ ˜S &˜[Ñ)¨DÑ0ð%@@ð& ˜‘ð'@@ð( " D™jð)@@ð* ˜s™) dÑ*ð+@@ð, 
# TÑ	)ó-@@ðJ "&Ø)-Ø)-ñàðð ˜$‘Jðð   $™Jð	ð
   $™Jðð 
# TÑ	)óð6Ð)Bð ÀtÈCÐQWÈKÑGXó ð:L¨ð L°Eð LÐ>WÐZ^Ñ>^ó Lð^¨cð ^Ð6OÐRVÑ6Vó ^ñ@ sð @¸¸d¹
ð @ÐNgÐjnÑNnó @ñ@¨ð @¸#À¹*ð @ÐPiÐlpÑPp÷ @r$   r   )r    r8   Úcollections.abcr   r   r   Útypingr   r   Ú!litellm.models.verification_tokenr	   Ú$litellm.repositories.base_repositoryr
   r   r   Ú%litellm.repositories.prisma_protocolsr   Úprisma.modelsr   r+   r%   Úlitellm.proxy.utilsr   r   Ú__annotations__r   © r$   r#   ú<module>r³      sc   ðòó ß -Ý ß 'õ÷ñ õ
 ?áõõõ 1ð
%Ð ˜Eó 
ôT@ .Ð1JÑ"Kõ T@r$   