o
    jjF                     @   s&   d dl m Z  d dlZG dd dZdS )    )datetimeNc                   @   s   e Zd ZdejfddZ			ddededed	edB d
e	de
eeeef dB defddZd ded	edB fddZ	d deded	edB de	fddZd!dedefddZdede	fddZdededede	fddZdS )"AlarmManagerconnc                 C   s   || _ | | _d S N)r   cursorcur)selfr    r	   */home/dore/onebot/Bot_Ero/core/db/alarm.py__init__   s   zAlarmManager.__init__NFcreator_user_idfire_atcontentgroup_id
is_privaterecurreturnc                 C   s   | d}t  d}|s|d u rdnt|}	|rdnd}
|r=t|d t|d t|d t|d f\}}}}d}n
d } } }}d}d } }}| jd|	t|||||
||||||||f | j  t| jjS )N%Y-%m-%d %H:%M:%Sr            aQ  
            INSERT INTO group_alarms (
                group_id, creator_user_id, fire_at, content, created_at, fired, is_private,
                is_recurring, repeat_y, repeat_m, repeat_d,
                recur_kind, recur_a, recur_b, recur_c
            )
            VALUES (?, ?, ?, ?, ?, 0, ?, ?, ?, ?, ?, ?, ?, ?, ?)
            )	strftimer   nowintr   executer   commit	lastrowid)r   r   r   r   r   r   r   fscsgidprivkabcrecryrmrdr	   r	   r
   add
   s    
	4"
zAlarmManager.addc                 C   sB   |d u r| j dt|f n| j dt|t|f | j  S )Na  
                SELECT id, fire_at, content, is_recurring,
                       recur_kind, recur_a, recur_b, recur_c
                FROM group_alarms
                WHERE creator_user_id = ? AND is_private = 1 AND fired = 0
                ORDER BY fire_at ASC
                a,  
                SELECT id, fire_at, content, is_recurring,
                       recur_kind, recur_a, recur_b, recur_c
                FROM group_alarms
                WHERE creator_user_id = ? AND group_id = ? AND is_private = 0 AND fired = 0
                ORDER BY fire_at ASC
                )r   r   r   fetchall)r   r   r   r	   r	   r
   pending,   s   

zAlarmManager.pendingalarm_idc                 C   sZ   |d u r| j dt|t|f n| j dt|t|t|f | j  | j jdkS )Nz
                DELETE FROM group_alarms
                WHERE id = ? AND creator_user_id = ? AND is_private = 1 AND fired = 0
                z
                DELETE FROM group_alarms
                WHERE id = ? AND group_id = ? AND creator_user_id = ? AND is_private = 0 AND fired = 0
                r   r   r   r   r   r   rowcount)r   r,   r   r   r	   r	   r
   cancelE   s   
zAlarmManager.cancel   r   limitc                 C   s*   | d}| jd|t|f | j S )Nr   a$  
            SELECT id, group_id, creator_user_id, content, fire_at, is_private,
                   is_recurring, recur_kind, recur_a, recur_b, recur_c
            FROM group_alarms
            WHERE fired = 0 AND fire_at <= ?
            ORDER BY fire_at ASC
            LIMIT ?
            )r   r   r   r   r*   )r   r   r1   nsr	   r	   r
   due[   s   


zAlarmManager.duec                 C   s*   | j dt|f | j  | j jdkS )NzQUPDATE group_alarms SET fired = 1 WHERE id = ? AND fired = 0 AND is_recurring = 0r   r-   )r   r,   r	   r	   r
   
mark_firedj   s   
zAlarmManager.mark_firedprev_fire_atnext_fire_atc                 C   s8   | d}| jd|t||f | j  | jjdkS )Nr   z
            UPDATE group_alarms
            SET fire_at = ?
            WHERE id = ? AND is_recurring = 1 AND fired = 0 AND fire_at = ?
            r   )r   r   r   r   r   r   r.   )r   r,   r5   r6   nxtr	   r	   r
   advancer   s   

zAlarmManager.advance)NFNr   )r0   )__name__
__module____qualname__sqlite3
Connectionr   r   r   strbooltupler)   r+   r/   r3   r4   r8   r	   r	   r	   r
   r      sT    	
"
r   )r   r<   r   r	   r	   r	   r
   <module>   s    