
    =j"              	       :   U d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	  e	       Z
daeej                     ed<   daeej                     ed<   dZdZd	ej                  fd
Zd	efdZded	dfdZddeded	efdZded	dfdZddededed	dfdZded	ee   fdZy)z2Redis client for cache, locks, and emergency stop.    N)AnyOptional)get_settings_redis_redis_loopztrading:emergency_stopztrading:lock:returnc                     K   t        j                         } t        t        
t        | urd at        't	        j
                  t        j                  d      a| at        S w)NT)decode_responses)asyncioget_event_loopr   r   aioredisfrom_urlsettings	redis_url)current_loops    ?C:\xampp\htdocs\tradingbinance\backend\app\core\redis_client.py	get_redisr      sT     ))+L
 k5+\:Y~""8#5#5M"Ms   AA c                  z   K   t                d {   } | j                  t               d {   }|dk(  S 7 &7 w)N1)r   getEMERGENCY_STOP_KEY)rvalues     r   is_emergency_stop_activer   $   s5     kA%%*++EC< 	+s   ;7;9
;;activec                 |   K   t                d {   }|j                  t        | rdnd       d {    y 7 '7 w)Nr   0)r   setr   )r   r   s     r   set_emergency_stopr   *   s2     kA
%%"6Cs
;;; 	;s   <8!<:<<keyttl_secondsc                    K   t                d{   }t         |  }|j                  |dd|       d{   S 7 +7 w)z8Acquire distributed lock for idempotent order execution.Nr   T)nxex)r   TRADING_LOCK_PREFIXr   )r    r!   r   lock_keys       r   acquire_lockr'   /   sB     kA%&se,Hx+>>> 	>s   A <&A >A A c                 z   K   t                d {   }|j                  t         |         d {    y 7 &7 wN)r   deleter%   )r    r   s     r   release_lockr+   6   s6     kA
(()*3%0
111 	1s   ;7 ;9;;r   ttlc                    K   t                d {   }|j                  | t        j                  |      |       d {    y 7 47 w)N)r$   )r   r   jsondumps)r    r   r,   r   s       r   	cache_setr0   ;   s:     kA
%%TZZ&3%
/// 	/s    A	A.A	A A	A	c                    K   t                d {   }|j                  |        d {   }|y t        j                  |      S 7 57 wr)   )r   r   r.   loads)r    r   r   s      r   	cache_getr3   @   s@     kA%%*E}::e	 	s   A
AA
AA
A
)<   )i,  )__doc__r   r.   typingr   r   redis.asyncior   app.core.configr   r   r   Redis__annotations__r   AbstractEventLoopr   r%   r   boolr   r   strintr'   r+   r0   r3        r   <module>rA      s    8       (>#'  '37Xg//0 7- %    <T <d <
?C ?c ?4 ?2C 2D 2
0 0S 0s 0T 0
 # r@   