o
    îMpjÅ	  ã                   @   s¢   d dl m Z mZ d dl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 d d
lmZ d dlmZ d dlmZ G dd„ dƒZdS )é    )ÚdatetimeÚ	timedeltaN)Úinit_schema)ÚCheckinManager)ÚPointsManager)ÚShopManager)ÚLotteryManager)ÚTitlesManager)ÚAlarmManager)ÚImmortalManager)ÚQuestManager)ÚActivityManagerc                   @   s:   e Zd Zdd„ Zdd„ Zddd„Zddd	„Zddd„ZdS )Ú	DbManagerc                 C   s®   t  d¡| _| j d¡ | j d¡ | j ¡ | _t| j| jƒ t| jƒ| _t	| jƒ| _
t| jƒ| _t| jƒ| _t| jƒ| _t| jƒ| _t| jƒ| _t| jƒ| _t| jƒ| _d S )Nzdata.dbzPRAGMA journal_mode=WALzPRAGMA foreign_keys=ON)Úsqlite3ÚconnectÚconnÚexecuteÚcursorÚcurr   r   Úcheckinr   Úpointsr   Úshopr   Úlotteryr	   Útitlesr
   Úalarmr   Úimmortalr   Úquestr   Úactivity©Úself© r    ú2/home/dore/onebot/Bot_Ero/core/database_manager.pyÚ__init__   s   zDbManager.__init__c                 C   s   | j  ¡  | j  ¡  d S )N)r   ÚcommitÚcloser   r    r    r!   Ú__del__"   s   
zDbManager.__del__é   c                 C   s0   | j  d|t|ƒt|ƒt|ƒf¡ | j ¡  d S )Na  
            INSERT INTO group_daily_message_stats (stat_date, group_id, user_id, message_count)
            VALUES (?, ?, ?, ?)
            ON CONFLICT(stat_date, group_id, user_id)
            DO UPDATE SET message_count = message_count + excluded.message_count
        ©r   r   Úintr   r#   )r   Ú	stat_dateÚgroup_idÚuser_idÚincr    r    r!   Ú#increment_group_daily_message_count&   s   ûz-DbManager.increment_group_daily_message_countc                 C   s(   | j  dt|ƒt|ƒf¡ | j ¡  d S )Nzã
            INSERT INTO user_total_message_count (user_id, message_count)
            VALUES (?, ?)
            ON CONFLICT(user_id) DO UPDATE SET
                message_count = message_count + excluded.message_count
        r'   )r   r+   r,   r    r    r!   Ú"increment_user_total_message_count/   s   ûz,DbManager.increment_user_total_message_counté2   c                 C   s&   | j  d|t|ƒt|ƒf¡ | j  ¡ S )NzØ
            SELECT user_id, message_count
            FROM group_daily_message_stats
            WHERE stat_date = ? AND group_id = ?
            ORDER BY message_count DESC, user_id ASC
            LIMIT ?
        )r   r   r(   Úfetchall)r   r)   r*   Úlimitr    r    r!   Úget_group_daily_message_stats8   s   ú
z'DbManager.get_group_daily_message_statsN)r&   )r/   )Ú__name__Ú
__module__Ú__qualname__r"   r%   r-   r.   r2   r    r    r    r!   r      s    

		r   )r   r   r   Úcore.db._baser   Úcore.db.checkinr   Úcore.db.pointsr   Úcore.db.shopr   Úcore.db.lotteryr   Úcore.db.titlesr	   Úcore.db.alarmr
   Úcore.db.immortalr   Úcore.db.questr   Úcore.db.activityr   r   r    r    r    r!   Ú<module>   s    