o
    <6j                  
   @   s   d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZ dededee
 fd	d
Zdedee
 fddZdedededede
f
ddZdededefddZdededefddZdedededefddZdS )    )ListOptional)select)AsyncSession)
joinedload)Admin	AdminRoleUsersessiontelegram_idreturnc                    s>   |  tttjtj|kt	tjI dH }|
 S )z#Telegram ID bo'yicha adminni topishN)executer   r   joinuserwherer	   r   optionsr   scalar_one_or_none)r
   r   result r   D/var/www/www-root/data/www/ai-bot.pdev.uz/bot/database/crud/admin.pyget_admin_by_telegram_id
   s   
r   c                    s2   |  ttttjI dH }t|  S )zBarcha adminlar ro'yxatiN)	r   r   r   r   r   r   listscalarsall)r
   r   r   r   r   get_all_admins   s
   
r   r   roleadded_byc                    s>   t |j||d}| | |  I dH  | |I dH  |S )zYangi admin qo'shish)user_idr   r   N)r   idaddcommitrefresh)r
   r   r   r   adminr   r   r   	add_admin   s   
r#   c                    s<   t | |I dH }|sdS | |I dH  |  I dH  dS )z,Adminni o'chirish. Returns True agar topilsaNFT)r   deleter    r
   r   r"   r   r   r   remove_admin1   s   r&   c                    s   t | |I dH }|duS )z)Foydalanuvchi admin ekanligini tekshirishN)r   r%   r   r   r   is_admin=   s   r'   new_rolec                    s2   t | |I dH }|sdS ||_|  I dH  dS )zAdmin rolini o'zgartirishNFT)r   r   r    )r
   r   r(   r"   r   r   r   update_admin_roleC   s   r)   N)typingr   r   
sqlalchemyr   sqlalchemy.ext.asyncior   sqlalchemy.ormr   bot.database.modelsr   r   r	   intr   r   r#   boolr&   r'   r)   r   r   r   r   <module>   sR    


