
    i                         d Z dgZddlZddlZddlZddlmZmZ ej                  rddl
mZ ej                   G d d             Zy)zASimple implementation to store currencies data in a SQL database.CurrenciesDB    N   )	get_cachelog)CacheRowTypec                       e Zd ZU dZeed<   dZeed<    ej                  e	      j                  dz  Zej                  ed<   d Zd Zd	 Zd
ededz  fdZdedededz  fdZdedefdZy)r   data_currencies_names	ctx_namesdata_currencies_iso4217ctx_iso4217zcurrencies.json	json_filec                 "    t               | _        y )N)r   cacheselfs    &/root/searxng/searx/data/currencies.py__init__zCurrenciesDB.__init__   s    [
    c                     | j                   j                  d      dk7  r7| j                   j                  j                  dd       | j                          y y )Nzcurrencies loadedOK)r   
propertiessetloadr   s    r   initzCurrenciesDB.init   sC    ::  !45=JJ!!%%&94@IIK >r   c                    t        j                  d       t        | j                  d      5 }t	        j
                  |      }d d d        d   j                         D cg c]
  \  }}||d f }}}| j                  j                  || j                         |d   j                         D cg c]
  \  }}||d f }}}| j                  j                  || j                         y # 1 sw Y   xY wc c}}w c c}}w )Nzinit searx.data.CURRENCIESzutf-8)encodingnames)ctxiso4217)r   debugopenr   jsonr   itemsr   setmanyr
   r   )r   f	data_dictkvrowss         r   r   zCurrenciesDB.load%   s    		./$..73 	@q3799Q<I	@ @I?Q?W?W?Y%Ztq!q!Tl%Z%Z

4T^^4)29)=)C)C)EFAAtFF

4T%5%56	@ 	@ &[Fs   C*!C60C<*C3namereturnNc                     | j                          | j                  j                  |d | j                        }t	        |t
              r|d   }|S )Nkeydefaultr   )r   r   getr
   
isinstancelist)r   r*   ret_vals      r   name_to_iso4217zCurrenciesDB.name_to_iso4217/   sB    		*.**..T4UYUcUc.*dgt$bkGr   r   languagec                     | j                          | j                  j                  |i | j                        }|j                  |      S Nr-   )r   r   r1   r   )r   r   r6   iso4217_languagess       r   iso4217_to_namezCurrenciesDB.iso4217_to_name8   s=    		,0JJNNwPRX\XhXhN,i $$X..r   c                 h    | j                   j                  |i | j                        }t        |      S r8   )r   r1   r   bool)r   r   items      r   
is_iso4217zCurrenciesDB.is_iso4217>   s*    zz~~'24;K;K~LDzr   )__name__
__module____qualname__r
   str__annotations__r   pathlibPath__file__parentr   r   r   r   r5   r:   r<   r>    r   r   r   r      s     -Is,0K0*gll84;;>OOIw||O!7C C$J /s /c /cDj /# $ r   )__doc____all__typingtr"   rD   corer   r   TYPE_CHECKINGsearx.cacher   finalr   rH   r   r   <module>rQ      sC    G
     ??( / / 	/r   