
    pWiO                     V   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 dlmZ d dlmZ  ed	d
g          Ze                    d           ee          fdefd            Z G d de          Ze                    d           ee          fdedefd            ZdS )    )	APIRouterDepends)	BaseModel)select)AsyncSession)Dict)get_db)AppSettings)datetimez/api/v1/settingssettings)prefixtags dbc                    K   |                      t          t                               d{V }|                                                                }dd |D             iS )z(Return all settings as a key-value dict.Nr   c                 (    i | ]}|j         |j        S  )keyvalue).0rows     ;/var/www/html/crypto-bot/backend/app/api/routes/settings.py
<dictcomp>z get_settings.<locals>.<dictcomp>   s    EEE#)EEE    )executer   r
   scalarsall)r   resultsettings_rowss      r   get_settingsr       sh       ::f[1122222222FNN$$((**MEE}EEEFFr   c                   *    e Zd ZU eeef         ed<   dS )SettingsUpdateRequestr   N)__name__
__module____qualname__r   str__annotations__r   r   r   r"   r"      s&         38nr   r"   bodyc           	      >  K   | j                                         D ]\  }}|                    t          t                                        t          j        |k                         d{V }|                                }|r ||_        t          j
                    |_        |                    t	          ||t          j
                                         |                                 d{V  dt          | j                                                   dS )z,Upsert one or more settings key-value pairs.N)r   r   
updated_atzSettings updated)messageupdated_keys)r   itemsr   r   r
   wherer   scalar_one_or_noner   r   utcnowr*   addcommitlistkeys)r(   r   r   r   r   r   s         r   update_settingsr5      s     
 m))++ T T
Uzz&"5"5";";KOs<R"S"STTTTTTTT'')) 	TCI%_..CNNFF;3e@Q@QRRRSSSS
))++)4@R@R@T@T;U;UVVVr   N)fastapir   r   pydanticr   
sqlalchemyr   sqlalchemy.ext.asyncior   typingr   app.databaser	   app.models.settings_modelr
   r   routergetr    r"   putr5   r   r   r   <module>r@      s   & & & & & & & &             / / / / / /             1 1 1 1 1 1      	,J<	@	@	@ B*1'&// G G< G G G G    I    B4;GFOOW W
W%1W W W W W Wr   