o
    è´jè  ã                   @   s’   d dl Z d dlZd dlmZ dd„ Zdd„ Zdeded	ed
efdd„Zdeded	ed
efdd„Z	ddede
e fdd„ZdededB fdd„ZdS )é    N)ÚDB_PATHc                  C   sZ   t jtdd��} |  d¡ |  d¡ |  d¡ |  ¡  W d  ƒ dS 1 s&w   Y  dS )uF   Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð½Ð°Ñ� Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ� Ð±Ð°Ð·Ñ‹ Ð´Ð°Ð½Ð½Ñ‹Ñ….é
   ©ÚtimeoutúPRAGMA journal_mode=WAL;áN  
            CREATE TABLE IF NOT EXISTS scores (
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                user_id INTEGER NOT NULL,
                username TEXT,
                first_name TEXT,
                score INTEGER NOT NULL,
                created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            )
        á%  
            CREATE TABLE IF NOT EXISTS best_scores (
                user_id INTEGER PRIMARY KEY,
                username TEXT,
                first_name TEXT,
                best_score INTEGER NOT NULL,
                updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            )
        N)Úsqlite3Úconnectr   ÚexecuteÚcommit)Úconn© r   ú'/home/ubuntu/bots/monkey jump bot/db.pyÚinit_db_sync   s   




	"ër   c               	   Ã   sˆ   �t jtdd�4 I dH š+} |  d¡I dH  |  d¡I dH  |  d¡I dH  |  ¡ I dH  W d  ƒI dH  dS 1 I dH s=w   Y  dS )uH   Ð�Ñ�Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð½Ð°Ñ� Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ� Ð±Ð°Ð·Ñ‹ Ð´Ð°Ð½Ð½Ñ‹Ñ….r   r   Nr   r   r   ©Ú	aiosqliter
   r   r   r   )Údbr   r   r   Úinit_db    s   €
	.ër   Úuser_idÚusernameÚ
first_nameÚscorec                 C   sj   t ƒ  tjtdd��!}| d| |||f¡ | d| |||f¡ | ¡  W d  ƒ dS 1 s.w   Y  dS )uB   Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð½Ð¾ Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚ Ð¸Ð³Ñ€Ñ‹.r   r   úMINSERT INTO scores (user_id, username, first_name, score) VALUES (?, ?, ?, ?)á  
            INSERT INTO best_scores (user_id, username, first_name, best_score)
            VALUES (?, ?, ?, ?)
            ON CONFLICT(user_id) DO UPDATE SET
                username = CASE WHEN excluded.username != '' THEN excluded.username ELSE best_scores.username END,
                first_name = CASE WHEN excluded.first_name != '' THEN excluded.first_name ELSE best_scores.first_name END,
                best_score = MAX(best_score, excluded.best_score),
                updated_at = CURRENT_TIMESTAMP
        N)r   r	   r
   r   r   r   )r   r   r   r   r   r   r   r   Úsave_score_sync:   s   
þ
ø
	"òr   c              	   Ã   sŒ   �t jtdd�4 I dH š-}| d| |||f¡I dH  | d| |||f¡I dH  | ¡ I dH  W d  ƒI dH  dS 1 I dH s?w   Y  dS )uF   Ð¡Ð¾Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚ Ð¸Ð³Ñ€Ñ‹ (Ð°Ñ�Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð½Ð¾).r   r   Nr   r   r   )r   r   r   r   r   r   r   r   Ú
save_scoreN   s   €

þ

ø	.òr   r   ÚlimitÚreturnc              	   Ã   s€   �t jtdd�4 I dH š'}t j|_| d| f¡I dH }| ¡ I dH }dd„ |D ƒW  d  ƒI dH  S 1 I dH s9w   Y  dS )u'   ÐŸÐ¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ Ñ‚Ð¾Ð¿ Ð¸Ð³Ñ€Ð¾ÐºÐ¾Ð².r   r   NzbSELECT user_id, username, first_name, best_score FROM best_scores ORDER BY best_score DESC LIMIT ?c                 S   s   g | ]}t |ƒ‘qS r   )Údict)Ú.0Úrowr   r   r   Ú
<listcomp>j   s    z#get_leaderboard.<locals>.<listcomp>)r   r
   r   ÚRowÚrow_factoryr   Úfetchall)r   r   ÚcursorÚrowsr   r   r   Úget_leaderboarda   s   €
þ0ùr(   c              	   Ã   sz   �t jtdd�4 I dH š$}| d| f¡I dH }| ¡ I dH }|r$|d ndW  d  ƒI dH  S 1 I dH s6w   Y  dS )uJ   ÐŸÐ¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ Ð»ÑƒÑ‡ÑˆÐ¸Ð¹ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ�.r   r   Nz4SELECT best_score FROM best_scores WHERE user_id = ?r   )r   r
   r   r   Úfetchone)r   r   r&   r!   r   r   r   Úget_user_bestm   s   €
þ0úr*   )r   )r	   r   Úconfigr   r   r   ÚintÚstrr   r   Úlistr   r(   r*   r   r   r   r   Ú<module>   s    