o
    eOjC                     @  s  d dl mZ d dlZd dlmZ d dlmZmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZ d dlmZ G d	d
 d
eejZG dd deejZG dd deejZG dd deejZ G dd deejZ!G dd deejZ"G dd deejZ#G dd deZ$G dd deZ%G dd deZ&G dd deZ'G dd  d eZ(G d!d" d"eZ)G d#d$ d$eZ*G d%d& d&eZ+G d'd( d(eZ,G d)d* d*eZ-dS )+    )annotationsN)datetime)OptionalList)
BigIntegerBooleanDateTimeEnumFloat
ForeignKeyIntegerStringTextUniqueConstraintfuncARRAY)JSONB)Mappedmapped_columnrelationship)Basec                   @     e Zd ZdZdZdZdS )LanguageuzruenN)__name__
__module____qualname__UZRUEN r"   r"   @/var/www/www-root/data/www/ai-bot.pdev.uz/bot/database/models.pyr          r   c                   @  r   )	AdminRolesuper_adminadmin	moderatorN)r   r   r   SUPER_ADMINADMIN	MODERATORr"   r"   r"   r#   r%      r$   r%   c                   @  $   e Zd ZdZdZdZdZdZdZdS )BroadcastTargetall	active_7d
active_30dlang_uzlang_rulang_enN)	r   r   r   ALL	ACTIVE_7D
ACTIVE_30DLANG_UZLANG_RULANG_ENr"   r"   r"   r#   r-   !       r-   c                   @      e Zd ZdZdZdZdZdZdS )BroadcastStatuspendingrunningdonefailed	cancelledN)r   r   r   PENDINGRUNNINGDONEFAILED	CANCELLEDr"   r"   r"   r#   r<   *       r<   c                   @  r;   )	MediaTypetextphotovideodocument	animationN)r   r   r   TEXTPHOTOVIDEODOCUMENT	ANIMATIONr"   r"   r"   r#   rH   2   rG   rH   c                   @  r,   )MovieLanguageTypeoriginal	dubbed_uz	dubbed_rusubtitled_uzsubtitled_rusubtitled_enN)	r   r   r   ORIGINAL	DUBBED_UZ	DUBBED_RUSUBTITLED_UZSUBTITLED_RUSUBTITLED_ENr"   r"   r"   r#   rS   :   r:   rS   c                   @  r   )
SyncStatusr>   r?   r@   N)r   r   r   rC   rD   rE   r"   r"   r"   r#   r`   C   r$   r`   c                   @  sx  e Zd ZU dZeedddZded< eeddddZ	ded< ee
d	dd
Zded< ee
ddd
Zded< eeedd dejddZded< eeddZded< ee
ddd
Zded< eedddd
Zded< eedd
Zded< eeddZded < eedde d!Zd"ed#< eedde e d$Zd"ed%< ed&d'd(Zd)ed*< ed&dd'd+Zd,ed-< d3d0d1Zd2S )4UserusersTprimary_keyautoincrementMapped[int]idFuniquenullableindextelegram_id@   rj   Mapped[Optional[str]]username   Mapped[str]	full_namec                 C     dd | D S )Nc                 S     g | ]}|j qS r"   value.0er"   r"   r#   
<listcomp>U       z!User.<lambda>.<locals>.<listcomp>r"   xr"   r"   r#   <lambda>U       zUser.<lambda>values_callabledefaultrj   zMapped[Language]languager   Mapped[bool]	is_banned   
ban_reasontimezoneMapped[Optional[datetime]]	banned_atMapped[Optional[int]]	banned_by	is_activeserver_defaultMapped[datetime]registered_atr   onupdatelast_active_atuserselectin)back_populateslazyMapped[List['MovieView']]movie_views)r   uselistr   zMapped[Optional['Admin']]admin_profilereturnstrc                 C     d| j  d| jdS )Nz	<User id=z name=>)rl   rs   selfr"   r"   r#   __repr__p      zUser.__repr__Nr   r   ) r   r   r   __tablename__r   r   rg   __annotations__r   rl   r   rp   rs   r	   r   r   r   r   r   r   r   r   r   r   r   nowr   r   r   r   r   r   r"   r"   r"   r#   ra   M   s8   
 ra   c                   @  s   e Zd ZU dZeedddZded< eedddZ	d	ed
< eedddZ
d	ed< eedddZd	ed< eedddddZd	ed< edddZded< dddZdS )GenregenresTrc   rf   rg   rm   Frn   rr   name_uzname_runame_enrh   slugmovie_genres	secondaryr   zMapped[List['Movie']]movieslangr   r   c                 C  s   t | d| | jS )Nname_)getattrr   r   r   r"   r"   r#   get_name   s   zGenre.get_nameNr   r   r   r   )r   r   r   r   r   r   rg   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   r   x   s   
 r   c                   @  s  e Zd ZU dZeedddZded< eedddddZ	d	ed
< ee
ddZded< eedddZded< eedddZded< eedddZded< eeddZded< eeddZded< eeddZded< eeddZded< eeddZded< eedddZded< eeedd dddZded< eedddZded < eeddZded!< eeddZd"ed#< eeddZd"ed$< eed%ddZded&< eedddZded'< eed(dd)Z ded*< ee!dd+Z"d,ed-< ee#dd.e$% d/Z&d0ed1< ee#dd.e$% e$% d2Z'd0ed3< ee#dd.ddZ(d4ed5< e)d6dd7Z*d8ed9< e)d:d;Z+d<ed=< dHdAdBZ,dHdCdDZ-dIdEdFZ.dGS )JMovier   Trc   rf   rg       Frh   rr   codern   channel_message_idr   ro   title_uztitle_rutitle_endescription_uzdescription_rudescription_enr   yearduration   countryc                 C  rt   )Nc                 S  ru   r"   rv   rx   r"   r"   r#   r{      r|   z"Movie.<lambda>.<locals>.<listcomp>r"   r}   r"   r"   r#   r      r   zMovie.<lambda>r   z#Mapped[Optional[MovieLanguageType]]language_typerq   directorcastzMapped[Optional[float]]imdb_ratingkinopoisk_rating   
age_ratingposter_file_idr   r   
view_countr   r   r   r   r   r   
created_atr   
updated_atr   	synced_atr   r   zMapped[List['Genre']]r   movier   r   viewsr   r   r   c                 C  s(   t | d| p| jp| jp| jp| jS )Ntitle_)r   r   r   r   r   r   r"   r"   r#   	get_title   s   zMovie.get_titlec                 C  s&   t | d| p| jp| jp| jpdS )Ndescription_ )r   r   r   r   r   r"   r"   r#   get_description   s   zMovie.get_descriptionc                 C  s   d| j d| jdS )Nz<Movie code= title=r   )r   r   r   r"   r"   r#   r      r   zMovie.__repr__Nr   r   )/r   r   r   r   r   r   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   rS   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   r      sN   
 

		r   c                   @  sN   e Zd ZU dZdZeedddddZded	< eed
ddddZ	ded< dS )
MovieGenreu)   Movie ↔ Genre ko'p-ko'pga aloqa jadvalir   	movies.idCASCADEondeleteT)rd   rf   movie_idz	genres.idgenre_idN)
r   r   r   __doc__r   r   r   r   r   r   r"   r"   r"   r#   r      s
   
  r   c                   @  s   e Zd ZU dZeddddfZeedddZde	d	< ee
d
dddddZde	d< ee
ddddddZde	d< eedde ddZde	d< eddZde	d< eddZde	d< dS )	MovieViewr   user_idr   uq_movie_views_user_movie)nameTrc   rf   rg   users.idr   r   Frj   rk   r   r   r   rk   r   	viewed_atr   Mapped['User']r   r   zMapped['Movie']r   N)r   r   r   r   r   __table_args__r   r   rg   r   r   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   r      s   
 r   c                   @  s   e Zd ZU dZeedddZded< eedddZ	ded< ee
d	dd
Zded< ee
ddd
Zded< ee
ddd
Zded< eeddZded< eeddZded< eedd
Zded< eedde dZded< d!ddZd S )"MandatoryChannelmandatory_channelsTrc   rf   rg   Fri   rj   
channel_idr   rn   ro   channel_usernamerq   rr   channel_titler   invite_linkr   r   r   r   orderadded_byr   r   r   added_atr   r   c                 C  r   )Nz<MandatoryChannel id=r   r   )r   r   r   r"   r"   r#   r     r   zMandatoryChannel.__repr__Nr   )r   r   r   r   r   r   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   r      s   
 r   c                   @  s   e Zd ZU dZeedddZded< eeddddd	d
Z	ded< ee
edd dejd	dZded< eeddZded< eedde dZded< eddZded< dS )AdminadminsTrc   rf   rg   r   r   r   Fr   r   c                 C  rt   )Nc                 S  ru   r"   rv   rx   r"   r"   r#   r{     r|   z"Admin.<lambda>.<locals>.<listcomp>r"   r}   r"   r"   r#   r     r   zAdmin.<lambda>r   r   zMapped[AdminRole]rolern   r   r   r   r   r   r   r   r   r   r   N)r   r   r   r   r   r   rg   r   r   r   r	   r%   r*   r   r   r   r   r   r   r   r   r   r"   r"   r"   r#   r     s   
 r   c                   @  sZ  e Zd ZU dZeedddZded< eeddZ	ded< ee
d	ddZded
< eeedd dddZded< eeedd dejdZded< eeedd dejdZded< eeddZded< eeddZded< eeddZded< eeddZded< eedde dZded < eeddddZd!ed"< eeddddZd!ed#< d$S )%BroadcastMessagebroadcast_messagesTrc   rf   rg   rn   ro   rI   r   media_file_idc                 C  rt   )Nc                 S  ru   r"   rv   rx   r"   r"   r#   r{   0  r|   -BroadcastMessage.<lambda>.<locals>.<listcomp>r"   r}   r"   r"   r#   r   0  r   zBroadcastMessage.<lambda>r   zMapped[Optional[MediaType]]
media_typec                 C  rt   )Nc                 S  ru   r"   rv   rx   r"   r"   r#   r{   4  r|   r  r"   r}   r"   r"   r#   r   4  r   r   zMapped[BroadcastTarget]targetc                 C  rt   )Nc                 S  ru   r"   rv   rx   r"   r"   r#   r{   8  r|   r  r"   r}   r"   r"   r#   r   8  r   zMapped[BroadcastStatus]statusr   total_users
total_senttotal_failedF
created_byr   r   r   r   r   
started_atfinished_atN) r   r   r   r   r   r   rg   r   r   rI   r   r  r	   rH   r  r-   r4   r  r<   rB   r  r  r  r  r   r	  r   r   r   r   r
  r  r"   r"   r"   r#   r   )  s.   
 r   c                   @  s   e Zd ZU dZeedddZded< eee	dd de	j
d	Zd
ed< eedd	Zded< eedd	Zded< eedd	Zded< eeddZded< eeddZded< eedde dZded< eeddddZded< dS )SyncLog	sync_logsTrc   rf   rg   c                 C  rt   )Nc                 S  ru   r"   rv   rx   r"   r"   r#   r{   O  r|   z$SyncLog.<lambda>.<locals>.<listcomp>r"   r}   r"   r"   r#   r   O  r   zSyncLog.<lambda>r   r   zMapped[SyncStatus]r  r   movies_addedmovies_updatedmovies_skippedrn   ro   error_messageFtriggered_byr   r   r   r
  r   r  N)r   r   r   r   r   r   rg   r   r	   r`   rC   r  r  r  r  r   r  r   r  r   r   r   r
  r  r"   r"   r"   r#   r  J  s   
 r  c                   @  s   e Zd ZU dZeedddZded< eedddZ	ded< ee
d	dd
Zded< ee
ddd
Zded< eedd
Zded< eedde ddZded< dS )AdminActionadmin_actionsTrc   rf   rg   Fr   admin_telegram_idrm   rn   rr   action_typer   ro   	target_idzMapped[Optional[dict]]detailsr   r   r   r   N)r   r   r   r   r   r   rg   r   r   r  r   r  r  r   r  r   r   r   r   r"   r"   r"   r#   r  b  s   
 r  ).
__future__r   enumr   typingr   r   
sqlalchemyr   r   r   r	   r
   r   r   r   r   r   r   r   sqlalchemy.dialects.postgresqlr   sqlalchemy.ormr   r   r   bot.database.connectionr   r   r   r%   r-   r<   rH   rS   r`   ra   r   r   r   r   r   r   r   r  r  r"   r"   r"   r#   <module>   s2    8		
+N!