
    Eh
                     \    d dl mZ d dlZd dlZd dlZd dl d dl d dlmZ  G d d      Z	y)    )timezoneN)*)ClickHouseManagerc                   <    e Zd Zed        Zed        Zed        Zy)StaticMethodc                     	 t        d      }d}|j                  |d| i      }|r|d   d   rt        |d   d         S y# t        $ r"}t        j                  d|        Y d}~yd}~ww xY w)u   
        Получает время начала миграции токена из базы данных ClickHouse.
        :param token: Хеш токена.
        :return: Время в формате Unix timestamp или None.
        tokens_info)databasezKSELECT migrated FROM tokens WHERE token_address = %(token_address)s LIMIT 1token_addressr   Nu^   [take_migration_time] Ошибка при получении времени миграции: )r   execute_queryint	Exception
app_loggererror)token
ch_managerqueryresultes        0/home/ubuntu/SOL_API/sol_API/src/v3/utils/StM.pytake_migration_timez StaticMethod.take_migration_time   s    	*MBJ bE--eou5MNF&)A,6!9Q<(( 	}~  ~A  B  C	s   <A   	A+	A&&A+c                    | st         j                  d       y	 t        j                  t        j                  j                  |      d       t        |dd      5 }t        j                  | |dd	
       ddd       t         j                  d|        y# 1 sw Y   "xY w# t        $ r"}t         j                  d|        Y d}~yd}~ww xY w)u   
        Сохраняет данные в указанный JSON-файл.
        :param data: Список словарей или данных.
        :param path: Путь для сохранения файла.
        u?   [save_to_file] Нет данных для сохранения.NT)exist_okwutf-8encodingF   )ensure_asciiindentu/   [save_to_file] Сохранено в файл: uD   [save_to_file] Ошибка при сохранении файла: )r   warningosmakedirspathdirnameopenjsondumpinfor   r   )datar$   fr   s       r   save_to_filezStaticMethod.save_to_file$   s     `a	iKK-=dC'2 Aa		$a@AOOMdVTUA A  	icdecfghh	is0   AB# B6 B# B B# #	C,C		Cc                 B   t         j                  j                  |       st        j	                  d|         y	 t        | dd      5 }t        j                  |      cddd       S # 1 sw Y   yxY w# t        $ r"}t        j	                  d|        Y d}~yd}~ww xY w)u   
        Загружает данные из JSON-файла.
        :param file_path: Путь к файлу.
        :return: Объект Python (list или dict) или None.
        u-   [load_from_file] Файл не найден: Nrr   r   u>   [load_from_file] Ошибка при чтении файла: )	r"   r$   existsr   r   r&   r'   loadr   )	file_pathr+   r   s      r   load_from_filezStaticMethod.load_from_file7   s     ww~~i(LYKXY	iw7 $1yy|$ $ $ 	]^_]`ab	s5   A3 A'	A3 'A0,A3 0A3 3	B<BBN)__name__
__module____qualname__staticmethodr   r,   r2        r   r   r      s>     . i i$  r8   r   )
datetimer   pymysqlr'   r"   utils.loggerutils.configutils.ClickHouseManagerr   r   r7   r8   r   <module>r>      s$       	   5< <r8   