
    soj                     v    d dl T d dlmZ d dlmZ d dlmZ  G d de          Ze                                 dS )    )*)	BaseModel)Leaderboard)Userc                      e Zd ZdZ eeddd          Z eeddd          Z e	            Z
 e            Z e            Z G d d          Zededefd	            Zeded
d fd            Zeded
d fd            ZdS )LeaderboardUserz
    Leaderboard class
    leaderboard_usersCASCADE)backref	on_delete	on_updatec                       e Zd ZdZdS )LeaderboardUser.Metaleaderboard_userN)__name__
__module____qualname__db_table     !/app/src/model/LeaderboardUser.pyMetar      s        %r   r   user
rank_indexc                 8   t                                                                          t                                        t           j        | k    t          j                                        z  t           j        |k    z            	                                S )z
        Get the appearances of a user as a rank
        param user: The user
        param rank: The rank
        return: The appearances
        )
r   selectjoinr   wherer   groupis_nullr   count)r   r   s     r   get_appearances_as_rankz'LeaderboardUser.get_appearances_as_rank   st     VXXT+U %-$,,..0"-;= 
 UWW
	
r   returnc                 t   t                                                                          t                                        t           j        | k    t          j                                        z                                t           j	        
                                                                          S )z
        Get the highest rank attained by a user
        param user: The user
        return: The highest rank attained
        )r   r   r   r   r   r   r   r    order_byr   ascfirstr   s    r   get_max_rank_attainedz%LeaderboardUser.get_max_rank_attained/   sv     VXXT+UO(D0[5F5N5N5P5PQRRXo0446677UWW	
r   c                 t   t                                                                          t                                        t           j        | k    t          j                                        z                                t           j	        
                                                                          S )z
        Get the highest bounty attained by a user
        param user: The user
        return: The highest bounty attained
        )r   r   r   r   r   r   r   r    r%   bountydescr'   r(   s    r   get_max_bounty_attainedz'LeaderboardUser.get_max_bounty_attained@   sv     VXXT+UO(D0[5F5N5N5P5PQRRXo,113344UWW	
r   N)r   r   r   __doc__ForeignKeyFieldr   leaderboardr   r   IntegerFieldpositionBigIntegerFieldr+   SmallIntegerFieldr   r   staticmethodintr"   r)   r-   r   r   r   r   r      s?         "/0IQZ  K ?)Y)  D |~~H_F""$$J& & & & & & & & 
d 
 
 
 
 \
( 
D 
-> 
 
 
 \
  
d 
/@ 
 
 
 \
 
 
r   r   N)	peeweesrc.model.BaseModelr   src.model.Leaderboardr   src.model.Userr   r   create_tabler   r   r   <module>r<      s        ) ) ) ) ) ) - - - - - -      G
 G
 G
 G
 G
i G
 G
 G
T        r   