
    h                     N    d dl mZmZ d dlmZ d dlmZ d dlmZ  G d de      Z	y)    )OptionalTuple)AbstractRedis)AbstractRedisCluster)Backendc            	           e Zd ZdefdZdedeeef   fdZdede	e   fdZ
ddeded	e	e   ddfd
Zdde	e   de	e   defdZy)RedisBackendredisc                 <    || _         t        |t              | _        y N)r
   
isinstancer   
is_cluster)selfr
   s     g/var/www/html/retail-simulation-api/retail/lib/python3.12/site-packages/fastapi_cache/backends/redis.py__init__zRedisBackend.__init__
   s    
$U,@A    keyreturnc                 .  K   | j                   j                  | j                         4 d {   }|j                  |      j	                  |      j                          d {   cd d d       d {    S 7 K7 7 	# 1 d {  7  sw Y   y xY ww)N)transaction)r
   pipeliner   ttlgetexecute)r   r   pipes      r   get_with_ttlzRedisBackend.get_with_ttl   so     ::&&t3F&GG4#**3/7799	: 	: 	:G9	:GGGsV   ,BA:B2B $A<%B (B4A>5B<B >B BB	BBc                 T   K   | j                   j                  |       d {   S 7 wr   )r
   r   )r   r   s     r   r   zRedisBackend.get   s     ZZ^^C((((s   (&(Nvalueexpirec                 Z   K   | j                   j                  |||       d {   S 7 w)N)ex)r
   set)r   r   r   r   s       r   r"   zRedisBackend.set   s%     ZZ^^C6^::::s   "+)+	namespacec                    K   |r+d| d}| j                   j                  |d       d {   S |r#| j                   j                  |       d {   S y7 *7 w)Nz*for i, name in ipairs(redis.call('KEYS', 'z%:*')) do redis.call('DEL', name); endr   )numkeys)r
   evaldelete)r   r#   r   luas       r   clearzRedisBackend.clear   sY     >ykInoCa888**3/// 9/s!   )AA$AAAAr   )NN)__name__
__module____qualname__r   r   strr   intr   r   r   r"   r)    r   r   r	   r	   	   s    Bm B:c :eCHo :)S )Xc] );S ; ;hsm ;t ;Xc]  Y\ r   r	   N)
typingr   r   redis.asyncio.clientr   redis.asyncio.clusterr   fastapi_cache.backendsr   r	   r/   r   r   <module>r4      s    " . 6 *7 r   