o
    jj                     @   s*   d dl m Z mZ d dlZG dd dZdS )    )datetime	timedeltaNc                   @   sV   e Zd ZdejfddZdd ZdddZd	d
 Zdd Z	dd Z
dd Zdd ZdS )LotteryManagerconnc                 C   s   || _ | | _d S )N)r   cursorcur)selfr    r	   ,/home/dore/onebot/Bot_Ero/core/db/lottery.py__init__   s   zLotteryManager.__init__c                 C   s8   | j d|t|f | j  }|d u rdS t|d S )Nz
            SELECT draw_count
            FROM user_lottery_daily_stats
            WHERE stat_date = ? AND user_id = ?
        r   r   executeintfetchone)r   user_id	stat_daterowr	   r	   r
   
draw_count
   s
   

zLotteryManager.draw_count   c                 C   s*   | j d|t|t|f | j  d S )Nz
            INSERT INTO user_lottery_daily_stats (stat_date, user_id, draw_count)
            VALUES (?, ?, ?)
            ON CONFLICT(stat_date, user_id) DO UPDATE SET draw_count = draw_count + excluded.draw_count
        r   r   r   r   commit)r   r   r   incr	   r	   r
   add_draw   s   zLotteryManager.add_drawc                 C   s(   | j dt|t|f | j  d S )Nz
            INSERT INTO user_lottery_stats (user_id, total_spent)
            VALUES (?, ?)
            ON CONFLICT(user_id) DO UPDATE SET total_spent = total_spent + excluded.total_spent
        r   )r   r   amountr	   r	   r
   	add_spent   s   zLotteryManager.add_spentc                 C   s6   | j dt|f | j  }|d u rdS t|d S )Nzj
            SELECT total_spent
            FROM user_lottery_stats
            WHERE user_id = ?
        r   r   r   r   r   r	   r	   r
   spent#   s
   
zLotteryManager.spentc                 C   sv   | j dt|f | j  }|sdddddddS t|d t|d t|d t|d t|d t|d dS )	Nz
            SELECT draw_count, duplicate_count, zero_streak, max_zero_streak, has_hit_ten, total_zeros
            FROM user_lottery_profile
            WHERE user_id = ?
        r   )r   duplicate_countzero_streakmax_zero_streakhas_hit_tentotal_zerosr               r   r   r	   r	   r
   profile,   s&   

	




zLotteryManager.profilec                 C   sF   | j dt|t|t|t|t|t|t|f | j  d S )Na2  
            INSERT INTO user_lottery_profile (user_id, draw_count, duplicate_count, zero_streak, max_zero_streak, has_hit_ten, total_zeros)
            VALUES (?, ?, ?, ?, ?, ?, ?)
            ON CONFLICT(user_id) DO UPDATE SET
                draw_count = excluded.draw_count,
                duplicate_count = excluded.duplicate_count,
                zero_streak = excluded.zero_streak,
                max_zero_streak = excluded.max_zero_streak,
                has_hit_ten = excluded.has_hit_ten,
                total_zeros = excluded.total_zeros
        r   )r   r   r   r   r   r   r    r!   r	   r	   r
   upsert_profileE   s   zLotteryManager.upsert_profilec                 C   s`   t |d}|tdd }| jdt||d|df | j }|d u r*dS t|d S )Nz%Y-%m-%d %H:%M:%S   )daysz
            SELECT COALESCE(SUM(draw_count), 0)
            FROM user_lottery_daily_stats
            WHERE user_id = ? AND stat_date >= ? AND stat_date < ?
        z%Y-%m-%dr   )r   strptimer   r   r   r   strftimer   )r   r   week_start_strwswer   r	   r	   r
   weekly_draw_count[   s   
z LotteryManager.weekly_draw_countN)r   )__name__
__module____qualname__sqlite3
Connectionr   r   r   r   r   r&   r'   r/   r	   r	   r	   r
   r      s    
		r   )r   r   r3   r   r	   r	   r	   r
   <module>   s    