
    *WiG                     z   d dl mZmZ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 d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZmZ  eddg      Z G d de
      Z G d de
      Zej9                  dee          ee       ee      fdedefd       Zej=                  deej>                         ee       ee      fdededefd       Z ejC                  dejD                         ee       ee      fde#dedefd       Z$ej9                  de       ee       ee      fde#dedefd       Z%y)     )	APIRouterDependsHTTPExceptionstatus)Session)and_)	BaseModel)ListOptional)datetime)get_db)UserVkGroup)get_current_user)encrypt_tokendecrypt_tokenz
/vk-groupsz	vk-groups)prefixtagsc                   ,    e Zd ZU eed<   eed<   eed<   y)VkGroupCreatenamegroup_idaccess_tokenN)__name__
__module____qualname__str__annotations__     +/var/www/notifications/app/api/vk_groups.pyr   r      s    
IMr    r   c                   T    e Zd ZU eed<   eed<   eed<   eed<   eed<    G d d      Zy)	VkGroupResponseidr   r   r   
created_atc                       e Zd ZdZy)VkGroupResponse.ConfigTN)r   r   r   from_attributesr   r    r!   Configr'      s    r    r)   N)r   r   r   intr   r   r   r)   r   r    r!   r#   r#      s&    G
IMK r    r#    )response_modelcurrent_userdbc                     |j                  t              j                  t        j                  | j                  k(        j	                  t        j
                  j                               j                         }|S )uD   Получить список VK групп пользователя)queryr   filter	tenant_idorder_byr%   descall)r-   r.   	vk_groupss      r!   list_vk_groupsr7   "   s[     !((\333hw!!&&()##%  r    )r,   status_coderequestc                    |j                  t              j                  t        t        j                  |j                  k(  t        j
                  | j
                  k(              j                         }|r)t        t        j                  d| j
                   d      	 t        | j                        }t        |j                  | j                  | j
                  |d      }|j!                  |       |j#                          |j%                  |       |S # t        $ r,}t        t        j                  dt        |             d}~ww xY w)u)   Создать новую VK группуu   VK группа с ID 'u   ' уже существуетr8   detailu0   Ошибка шифрования токена: Nactive)r2   r   r   access_token_encr   )r0   r   r1   r   r2   r   firstr   r   HTTP_400_BAD_REQUESTr   r   	ExceptionHTTP_500_INTERNAL_SERVER_ERRORr   r   addcommitrefresh)r9   r-   r.   existingencrypted_tokenevk_groups          r!   create_vk_grouprJ   /   s&    xx ''!7!77 0 00	

 eg  33,W-=-=,>>[\
 	

'(<(<= ((\\!!(H FF8IIKJJxO'  
==Ec!fXN
 	

s   D 	E'EEz/{group_id})r8   r   c                 X   |j                  t              j                  t        t        j                  | k(  t        j
                  |j
                  k(              j                         }|st        t        j                  d      |j                  |       |j                          dddS )u   Удалить VK группу#   VK группа не найденаr;   Tu   VK группа удалена)successmessage)r0   r   r1   r   r$   r2   r?   r   r   HTTP_404_NOT_FOUNDdeleterD   r   r-   r.   rI   s       r!   delete_vk_grouprR   ^   s     xx ''JJ("!7!77	

 eg  118
 	

 IIhIIK(HIIr    c                    |j                  t              j                  t        t        j                  | k(  t        j
                  |j
                  k(              j                         }|st        t        j                  d      |S )u8   Получить информацию о VK группеrL   r;   )
r0   r   r1   r   r$   r2   r?   r   r   rO   rQ   s       r!   get_vk_grouprT   y   sv     xx ''JJ("!7!77	

 eg  118
 	

 Or    N)&fastapir   r   r   r   sqlalchemy.ormr   
sqlalchemyr   pydanticr	   typingr
   r   r   app.db.sessionr   app.db.modelsr   r   app.api.depsr   app.utils.encryptionr   r   routerr   r#   getr7   postHTTP_201_CREATEDrJ   rP   HTTP_200_OKr*   rR   rT   r   r    r!   <module>rc      s   = = "   !  ! ' ) = 
,k]	;I i  BtO45 !12&/			 6	 RV=T=TU !!12&/+++ 	+ V+\ }&*<*<= !!12&/JJJ 	J >J4 M/: !!12&/ 	 ;r    