
    (h]                         d dl m Z mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ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 d dlmZ d dlmZ d dl m!Z! d dl"m#Z# d dl m$Z$ dedee%e
f   fdZ&y)    )datetimetimezone)DictListOptionalTuple)UUID)Decimal)HTTPExceptionstatus)and_funcor_)IntegrityError)Sessionaliased)	nullslast)CurrencyRateCurrency)settings)APIException)API_PREFIXES)QueryPaginator)SYSTEM_BASE_CURRENCYdbreturnc           	        K   	 i }| j                  t              j                  t        j                  t        k(  t        j
                  j                  d            j                         }|D ]  }|j                  ||j                  <   | j                  t              j                  t        j                  |j                  k(        j                         }|sl|j                  sy|j                  D ]  }|j                  ||<     |S # t        $ r-}t        dt         j"                  dt%        |      id      d}~ww xY ww)a   
    Fetches currency rates based on the system base currency.

    Args:
        session (Session): SQLAlchemy session for database interaction.

    Returns:
        Dict[str, Decimal]: A dictionary mapping currency codes and their aliases to rates.
    N	get_rates	exceptionzFailed to fetch currency rates)modulestatus_codeerrormessage)queryr   filterbaser   
deleted_atis_allratecurrencyr   codefirstaliases	Exceptionr   r   HTTP_500_INTERNAL_SERVER_ERRORstr)r   currency_ratesratesr*   r+   aliases          ]/var/www/html/wine-match-dev/backend/winematch-backend/src/apps/currency/services/currency.pyr   r      s    
 &--l.?.?CW.WYeYpYpYtYtuyYz{  B 	6D,0IIN4==) xx)00$--1OPVVXHH,,%-- 6E,0IIN5)6	6  
==A'4	
 	

s5   ECD
 D
 &#D
 	E
	E (D;;E  EN)'r   r   typingr   r   r   r   uuidr	   decimalr
   fastapir   r   
sqlalchemyr   r   r   sqlalchemy.excr   sqlalchemy.ormr   r   sqlalchemy.sql.expressionr   !src.apps.currency.models.currencyr   r   src.core.configr   src.core.exceptionsr   src.utils.constantsr   src.utils.paginationr   r   r1   r        r6   <module>rF      sV    ' . .   ) & & ) + / D $ , , / 4#
#
	#w,#
rE   