o
    jj                     @   s&   d dl m Z  d dlZG dd dZdS )    )datetimeNc                   @   sf   e Zd ZdejfddZdd Zddefdd	Zd
d Z	dd Z
dd ZdddZdd Zdd ZdS )TitlesManagerconnc                 C   s   || _ | | _d S )N)r   cursorcur)selfr    r   +/home/dore/onebot/Bot_Ero/core/db/titles.py__init__   s   zTitlesManager.__init__c                 C   (   | j dt|f dd | j  D S )Nz
            SELECT title_id
            FROM user_titles
            WHERE user_id = ?
            ORDER BY title_id ASC
        c                 S      g | ]}|d  qS r   r   .0rowr   r   r	   
<listcomp>       z&TitlesManager.list.<locals>.<listcomp>r   executestrfetchallr   user_idr   r   r	   list
      zTitlesManager.listTcommitc                 C   sD   | j dt|t|t df | j jdk}|r | j	  |S )Nzu
            INSERT OR IGNORE INTO user_titles (user_id, title_id, unlocked_at)
            VALUES (?, ?, ?)
        z%Y-%m-%d %H:%M:%Sr   )
r   r   r   intr   nowstrftimerowcountr   r   )r   r   title_idr   insertedr   r   r	   unlock   s   
zTitlesManager.unlockc                 C   s(   | j dt|t|f | j  d uS )Nz~
            SELECT 1
            FROM user_titles
            WHERE user_id = ? AND title_id = ?
            LIMIT 1
        )r   r   r   r   fetchoner   r   r    r   r   r	   has   s   zTitlesManager.hasc                 C   s"   |  |}t|dkrd S |d S )Nr   )equipped_alllen)r   r   titlesr   r   r	   equipped&   s   
zTitlesManager.equippedc                 C   r   )Nz
            SELECT title_id
            FROM user_equipped_titles
            WHERE user_id = ?
            ORDER BY slot ASC
        c                 S   r   r   r   r   r   r   r	   r   3   r   z.TitlesManager.equipped_all.<locals>.<listcomp>r   r   r   r   r	   r&   ,   r   zTitlesManager.equipped_all   c                 C   s   t |}t|}| |}||v rdS t||krdS t }| jd|f | j D ]}|t|d  q+d}||v rE|d7 }||v s=| jd|||f | j	
  dS )N)Falready)Ffullze
            SELECT slot
            FROM user_equipped_titles
            WHERE user_id = ?
        r      zm
            INSERT INTO user_equipped_titles (user_id, slot, title_id)
            VALUES (?, ?, ?)
        )Tok)r   r   r&   r'   setr   r   r   addr   r   )r   r   r    	max_countr)   
used_slotsr   slotr   r   r	   equip5   s,   

zTitlesManager.equipc                 C   s"   | j dt|f | j  d S )NzT
            DELETE FROM user_equipped_titles
            WHERE user_id = ?
        )r   r   r   r   r   r   r   r   r	   clear_equippedR   s   zTitlesManager.clear_equippedc                 C   s6   t |}| | |d ur| j|t|dd d S d S )Nr*   )r1   )r   r5   r4   r   r$   r   r   r	   set_equippedY   s
   
zTitlesManager.set_equippedN)T)r*   )__name__
__module____qualname__sqlite3
Connectionr
   r   boolr"   r%   r)   r&   r4   r5   r6   r   r   r   r	   r      s    	
	
	r   )r   r:   r   r   r   r   r	   <module>   s    