§
    [—Ájv  ã                  ó¸   — d Z ddlmZ ddlZddlmZmZmZmZ  G d„ d¦  «        Z	 G d„ d¦  «        Z
 G d	„ d
¦  «        Z G d„ d¦  «        Z G d„ d¦  «        ZdS )z}
Trade Proxies for SQLite Storage in FreeExile.
Provides dictionary-like proxies for account stashes, items, and currencies.
é    )ÚannotationsN)ÚAnyÚOptionalÚDictÚListc                  ó.   ‡ — e Zd Zˆ fd„Zd
d„Zdd	„Zˆ xZS )ÚStashItemProxyc                ó�   •— t          ¦   «                              d|¦  «         t          ¦   «                              d|¦  «         d S )NÚ_engineÚ_item)ÚsuperÚ__setattr__)ÚselfÚengineÚoriginal_itemÚ	__class__s      €ú3C:\Projects\FreeExile\server\trade\trade_proxies.pyÚ__init__zStashItemProxy.__init__   s=   ø€ Ý‰Œ×Ò˜I vÑ.Ô.Ð.Ý‰Œ×Ò˜G ]Ñ3Ô3Ð3Ð3Ð3ó    ÚnameÚstrÚreturnr   c                ó,   — t          | j        |¦  «        S ©N)Úgetattrr   )r   r   s     r   Ú__getattr__zStashItemProxy.__getattr__   s   € Ý�t”z 4Ñ(Ô(Ð(r   ÚvalueÚNonec                óp   — t          | j        ||¦  «         | j                             | j        ¦  «         d S r   )Úsetattrr   r   Úupsert_item)r   r   r   s      r   r   zStashItemProxy.__setattr__   s4   € Ý�”
˜D %Ñ(Ô(Ð(ØŒ× Ò  ¤Ñ,Ô,Ð,Ð,Ð,r   )r   r   r   r   )r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   r   Ú__classcell__)r   s   @r   r	   r	      s`   ø€ € € € € ð4ð 4ð 4ð 4ð 4ð)ð )ð )ð )ð-ð -ð -ð -ð -ð -ð -ð -r   r	   c                  óf   — e Zd Zdd„Zdd„Zdd
„Zdd„Zdd„Zdd d„Zd„ Z	d!d„Z
d"d„Zd#d„Zd$d„ZdS )%ÚItemDictProxyÚ
account_idr   c                ó"   — || _         || _        d S r   ©r   r(   ©r   r   r(   s      r   r   zItemDictProxy.__init__   ó   € ØˆŒØ$ˆŒˆˆr   Úkeyc                ó¢   — | j                              |¦  «        }|r|j        | j        k    rt	          |¦  «        ‚t          | j         |¦  «        S r   )r   Úget_itemÚowner_account_idr(   ÚKeyErrorr	   ©r   r-   Úitems      r   Ú__getitem__zItemDictProxy.__getitem__   sL   € ØŒ{×#Ò# CÑ(Ô(ˆØð 	 �tÔ,°´Ò?Ð?Ý˜3‘-”-ÐÝ˜dœk¨4Ñ0Ô0Ð0r   r3   r   r   r   c                ó:   — | j                              |¦  «         d S r   )r   r!   r2   s      r   Ú__setitem__zItemDictProxy.__setitem__#   s   € ØŒ×Ò Ñ%Ô%Ð%Ð%Ð%r   c                ó:   — | j                              |¦  «         d S r   )r   Údelete_item)r   r-   s     r   Ú__delitem__zItemDictProxy.__delitem__&   s   € ØŒ×Ò Ñ$Ô$Ð$Ð$Ð$r   Úboolc                ó^   — | j                              |¦  «        }|d uo|j        | j        k    S r   )r   r/   r0   r(   r2   s      r   Ú__contains__zItemDictProxy.__contains__)   s1   € ØŒ{×#Ò# CÑ(Ô(ˆØ˜4ÐÐL DÔ$9¸T¼_Ò$LÐLr   NÚdefaultc                óˆ   — | j                              |¦  «        }|r|j        | j        k    r|S t	          | j         |¦  «        S r   )r   r/   r0   r(   r	   )r   r-   r=   r3   s       r   ÚgetzItemDictProxy.get-   sE   € ØŒ{×#Ò# CÑ(Ô(ˆØð 	�tÔ,°´Ò?Ð?ØˆNÝ˜dœk¨4Ñ0Ô0Ð0r   c              #  óÀ   K  — | j         j                             ¦   «         }|                     d| j        f¦  «         |                     ¦   «         D ]}|d         V — Œd S )Nú6SELECT item_uuid FROM items WHERE owner_account_id = ?Ú	item_uuid©r   ÚconnÚcursorÚexecuter(   Úfetchall©r   ÚcurÚrows      r   Ú__iter__zItemDictProxy.__iter__3   sk   è è € ØŒkÔ×%Ò%Ñ'Ô'ˆØ�ŠÐLÈtÌÐN`ÑaÔaÐaØ—<’<‘>”>ð 	#ð 	#ˆCØ�kÔ"Ð"Ð"Ð"Ð"ð	#ð 	#r   ú	List[str]c                ó    — t          | ¦  «        S r   ©Úlist©r   s    r   ÚkeyszItemDictProxy.keys9   ó   € Ý�D‰zŒzÐr   ú	List[Any]c                ó¸   ‡ — ‰ j         j                             ¦   «         }|                     d‰ j        f¦  «         ˆ fd„|                     ¦   «         D ¦   «         S )NrA   c                ó,   •— g | ]}‰|d                   ‘ŒS ©rB   © ©Ú.0rJ   r   s     €r   ú
<listcomp>z(ItemDictProxy.values.<locals>.<listcomp>?   s#   ø€ ÐAÐAÐA¨3��S˜Ô%Ô&ÐAÐAÐAr   rC   ©r   rI   s   ` r   ÚvalueszItemDictProxy.values<   sU   ø€ ØŒkÔ×%Ò%Ñ'Ô'ˆØ�ŠÐLÈtÌÐN`ÑaÔaÐaØAÐAÐAÐA°#·,²,±.´.ÐAÑAÔAÐAr   úList[tuple]c                ó¸   ‡ — ‰ j         j                             ¦   «         }|                     d‰ j        f¦  «         ˆ fd„|                     ¦   «         D ¦   «         S )NrA   c                ó<   •— g | ]}|d          ‰|d                   f‘ŒS rV   rW   rX   s     €r   rZ   z'ItemDictProxy.items.<locals>.<listcomp>D   s-   ø€ ÐUÐUÐU¸s��[Ô! 4¨¨KÔ(8Ô#9Ð:ÐUÐUÐUr   rC   r[   s   ` r   ÚitemszItemDictProxy.itemsA   sU   ø€ ØŒkÔ×%Ò%Ñ'Ô'ˆØ�ŠÐLÈtÌÐN`ÑaÔaÐaØUÐUÐUÐUÀcÇlÂlÁnÄnÐUÑUÔUÐUr   Úintc                óª   — | j         j                             ¦   «         }|                     d| j        f¦  «         |                     ¦   «         d         S )Nz5SELECT COUNT(*) FROM items WHERE owner_account_id = ?r   )r   rD   rE   rF   r(   Úfetchoner[   s     r   Ú__len__zItemDictProxy.__len__F   sE   € ØŒkÔ×%Ò%Ñ'Ô'ˆØ�ŠÐKÈdÌoÐM_Ñ`Ô`Ð`Ø�|Š|‰~Œ~˜aÔ Ð r   ©r(   r   )r-   r   )r-   r   r3   r   r   r   )r-   r   r   r   )r-   r   r   r:   r   )r-   r   r=   r   ©r   rL   )r   rS   ©r   r]   ©r   ra   )r"   r#   r$   r   r4   r6   r9   r<   r?   rK   rQ   r\   r`   rd   rW   r   r   r'   r'      sü   € € € € € ð%ð %ð %ð %ð1ð 1ð 1ð 1ð&ð &ð &ð &ð%ð %ð %ð %ðMð Mð Mð Mð1ð 1ð 1ð 1ð 1ð#ð #ð #ðð ð ð ðBð Bð Bð Bð
Vð Vð Vð Vð
!ð !ð !ð !ð !ð !r   r'   c                  ó^   — e Zd Zdd„Zdd„Zdd
„Zddd„Zdd„Zd„ Zdd„Z	d d„Z
d!d„Zd"d„ZdS )#ÚCurrencyDictProxyr(   r   c                ó"   — || _         || _        d S r   r*   r+   s      r   r   zCurrencyDictProxy.__init__M   r,   r   Úcurrency_namer   ra   c                óB   — | j                              | j        |¦  «        S r   ©r   Úget_balancer(   )r   rl   s     r   r4   zCurrencyDictProxy.__getitem__Q   ó   € ØŒ{×&Ò& t¤¸ÑFÔFÐFr   Úamountr   c                óH   — | j                              | j        ||¦  «         d S r   )r   Úset_balancer(   )r   rl   rq   s      r   r6   zCurrencyDictProxy.__setitem__T   s$   € ØŒ×Ò ¤°ÀÑGÔGÐGÐGÐGr   r   r=   c                óB   — | j                              | j        |¦  «        S r   rn   )r   rl   r=   s      r   r?   zCurrencyDictProxy.getW   rp   r   úDict[str, int]c                óÚ   — | j         j                             ¦   «         }|                     d| j        f¦  «         |                     ¦   «         }|rt          j        |d         ¦  «        ni S )Nz2SELECT balances FROM accounts WHERE account_id = ?Úbalances)r   rD   rE   rF   r(   rc   ÚjsonÚloadsrH   s      r   Ú	_get_balszCurrencyDictProxy._get_balsZ   s]   € ØŒkÔ×%Ò%Ñ'Ô'ˆØ�ŠÐHÈ4Ì?ÐJ\Ñ]Ô]Ð]Ø�lŠl‰nŒnˆØ.1Ð9�tŒz˜#˜jœ/Ñ*Ô*Ð*°rÐ9r   c              #  ód   K  — |                       ¦   «                              ¦   «         D ]}|V — Œd S r   )rz   rQ   )r   Úks     r   rK   zCurrencyDictProxy.__iter__`   s@   è è € Ø—’Ñ!Ô!×&Ò&Ñ(Ô(ð 	ð 	ˆAØˆGˆGˆGˆGð	ð 	r   rL   c                ó    — t          | ¦  «        S r   rN   rP   s    r   rQ   zCurrencyDictProxy.keysd   rR   r   ú	List[int]c                óh   — t          |                      ¦   «                              ¦   «         ¦  «        S r   )rO   rz   r\   rP   s    r   r\   zCurrencyDictProxy.valuesg   s&   € Ý�D—N’NÑ$Ô$×+Ò+Ñ-Ô-Ñ.Ô.Ð.r   r]   c                óh   — t          |                      ¦   «                              ¦   «         ¦  «        S r   )rO   rz   r`   rP   s    r   r`   zCurrencyDictProxy.itemsj   s&   € Ý�D—N’NÑ$Ô$×*Ò*Ñ,Ô,Ñ-Ô-Ð-r   c                óD   — t          |                      ¦   «         ¦  «        S r   )Úlenrz   rP   s    r   rd   zCurrencyDictProxy.__len__m   s   € Ý�4—>’>Ñ#Ô#Ñ$Ô$Ð$r   Nre   )rl   r   r   ra   )rl   r   rq   ra   r   r   )r   )rl   r   r=   ra   r   ra   )r   ru   rf   )r   r~   rg   rh   )r"   r#   r$   r   r4   r6   r?   rz   rK   rQ   r\   r`   rd   rW   r   r   rj   rj   L   sé   € € € € € ð%ð %ð %ð %ðGð Gð Gð GðHð Hð Hð HðGð Gð Gð Gð Gð:ð :ð :ð :ðð ð ðð ð ð ð/ð /ð /ð /ð.ð .ð .ð .ð%ð %ð %ð %ð %ð %r   rj   c                  óJ   — e Zd ZdZdd„Zedd„¦   «         Zedd	„¦   «         Zd
S )ÚSQLiteAccountStashzIA proxy object that interacts with SQLite for AccountStash compatibility.r(   r   c                ó"   — || _         || _        d S r   r*   r+   s      r   r   zSQLiteAccountStash.__init__s   r,   r   r   r'   c                ó6   — t          | j        | j        ¦  «        S r   )r'   r   r(   rP   s    r   r`   zSQLiteAccountStash.itemsw   s   € å˜Tœ[¨$¬/Ñ:Ô:Ð:r   rj   c                ó6   — t          | j        | j        ¦  «        S r   )rj   r   r(   rP   s    r   Ú
currencieszSQLiteAccountStash.currencies{   s   € å  ¤¨d¬oÑ>Ô>Ð>r   Nre   )r   r'   )r   rj   )r"   r#   r$   Ú__doc__r   Úpropertyr`   rˆ   rW   r   r   r„   r„   q   sn   € € € € € ØSÐSð%ð %ð %ð %ð ð;ð ;ð ;ñ „Xð;ð ð?ð ?ð ?ñ „Xð?ð ?ð ?r   r„   c                  óX   — e Zd ZdZd„ Zdd„Zdd„Zddd„Zd„ Zdd„Z	dd„Z
dd„Zd d„ZdS )!ÚSQLiteAccountsProxyz'Proxy for InstantBuyoutEngine.accounts.c                ó   — || _         d S r   )r   )r   r   s     r   r   zSQLiteAccountsProxy.__init__‚   s   € ØˆŒˆˆr   r(   r   r   r„   c                ó~   — | j                              |¦  «        st          |¦  «        ‚t          | j         |¦  «        S r   )r   Úaccount_existsr1   r„   )r   r(   s     r   r4   zSQLiteAccountsProxy.__getitem__…   s:   € ØŒ{×)Ò)¨*Ñ5Ô5ð 	'Ý˜:Ñ&Ô&Ð&Ý! $¤+¨zÑ:Ô:Ð:r   Ústashr   r   c                ó:   — | j                              |¦  «         d S r   )r   Úensure_account)r   r(   r�   s      r   r6   zSQLiteAccountsProxy.__setitem__Š   s   € ØŒ×"Ò" :Ñ.Ô.Ð.Ð.Ð.r   Nr=   úOptional[SQLiteAccountStash]c                ód   — | j                              |¦  «        rt          | j         |¦  «        S |S r   )r   r�   r„   )r   r(   r=   s      r   r?   zSQLiteAccountsProxy.get�   s1   € ØŒ;×%Ò% jÑ1Ô1ð 	?Ý% d¤k°:Ñ>Ô>Ð>Øˆr   c              #  ó²   K  — | j         j                             ¦   «         }|                     d¦  «         |                     ¦   «         D ]}|d         V — Œd S )NzSELECT account_id FROM accountsr(   )r   rD   rE   rF   rG   rH   s      r   rK   zSQLiteAccountsProxy.__iter__’   sd   è è € ØŒkÔ×%Ò%Ñ'Ô'ˆØ�ŠÐ5Ñ6Ô6Ð6Ø—<’<‘>”>ð 	$ð 	$ˆCØ�lÔ#Ð#Ð#Ð#Ð#ð	$ð 	$r   rL   c                ó    — t          | ¦  «        S r   rN   rP   s    r   rQ   zSQLiteAccountsProxy.keys˜   rR   r   úList[SQLiteAccountStash]c                ó    ‡ — ˆ fd„‰ D ¦   «         S )Nc                ó    •— g | ]
}‰|         ‘ŒS rW   rW   ©rY   r|   r   s     €r   rZ   z.SQLiteAccountsProxy.values.<locals>.<listcomp>œ   s   ø€ Ð&Ð&Ð&˜A��Q”Ð&Ð&Ð&r   rW   rP   s   `r   r\   zSQLiteAccountsProxy.values›   s   ø€ Ø&Ð&Ð&Ð& Ð&Ñ&Ô&Ð&r   r]   c                ó    ‡ — ˆ fd„‰ D ¦   «         S )Nc                ó$   •— g | ]}|‰|         f‘ŒS rW   rW   rš   s     €r   rZ   z-SQLiteAccountsProxy.items.<locals>.<listcomp>Ÿ   s!   ø€ Ð+Ð+Ð+ ��D˜”G�Ð+Ð+Ð+r   rW   rP   s   `r   r`   zSQLiteAccountsProxy.itemsž   s   ø€ Ø+Ð+Ð+Ð+ dÐ+Ñ+Ô+Ð+r   ra   c                óœ   — | j         j                             ¦   «         }|                     d¦  «         |                     ¦   «         d         S )NzSELECT COUNT(*) FROM accountsr   )r   rD   rE   rF   rc   r[   s     r   rd   zSQLiteAccountsProxy.__len__¡   s>   € ØŒkÔ×%Ò%Ñ'Ô'ˆØ�ŠÐ3Ñ4Ô4Ð4Ø�|Š|‰~Œ~˜aÔ Ð r   )r(   r   r   r„   )r(   r   r�   r   r   r   r   )r(   r   r=   r   r   r“   rf   )r   r—   rg   rh   )r"   r#   r$   r‰   r   r4   r6   r?   rK   rQ   r\   r`   rd   rW   r   r   rŒ   rŒ   €   sÉ   € € € € € Ø1Ð1ðð ð ð;ð ;ð ;ð ;ð
/ð /ð /ð /ðð ð ð ð ð
$ð $ð $ðð ð ð ð'ð 'ð 'ð 'ð,ð ,ð ,ð ,ð!ð !ð !ð !ð !ð !r   rŒ   )r‰   Ú
__future__r   rx   Útypingr   r   r   r   r	   r'   rj   r„   rŒ   rW   r   r   ú<module>r       s$  ððð ð
 #Ð "Ð "Ð "Ð "Ð "Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,ð
-ð 
-ð 
-ð 
-ð 
-ñ 
-ô 
-ð 
-ð1!ð 1!ð 1!ð 1!ð 1!ñ 1!ô 1!ð 1!ðh"%ð "%ð "%ð "%ð "%ñ "%ô "%ð "%ðJ?ð ?ð ?ð ?ð ?ñ ?ô ?ð ?ð$!ð $!ð $!ð $!ð $!ñ $!ô $!ð $!ð $!ð $!r   