
    soj                         d dl mZ d dlT d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ  G d d	e          Ze                                 d
S )    )Optional)*)User)	BaseModel)
DevilFruit)DevilFruitAbilityType)DevilFruitStatusc                       e Zd ZdZ eeddd          Z e            Z e            Z	 G d d          Z
ededed	ed          fd
            ZdS )DevilFruitAbilityz#
    Devil Fruit Ability class
    devil_fruit_abilitiesCASCADE)backref	on_delete	on_updatec                       e Zd ZdZdS )DevilFruitAbility.Metadevil_fruit_abilityN)__name__
__module____qualname__db_table     #/app/src/model/DevilFruitAbility.pyMetar      s        (r   r   userability_typereturnc                 D   t                                                               t                                        t          j        | k    t          j        dk    z  t          j        t          j	        k    z  t           j
        |k    z                                            S )a
  
        Given a user and an ability type, get the ability of a non-defective Devil Fruit eaten by
        the user with the given ability type

        :param user: The user
        :param ability_type: The ability type
        :return: The ability, if any
        F)r   selectjoinr   whereowneris_defectivestatusr	   EATENr   get_or_none)r   r   s     r   get_user_abilityz"DevilFruitAbility.get_user_ability   s     $$&&T*U!T)*e35$(8(>>@ %1\AC  []]
	
r   N)r   r   r   __doc__ForeignKeyFieldr   devil_fruitSmallIntegerFieldr   valuer   staticmethodr   r   r   r(   r   r   r   r   r      s          "/3yT]  K %$&&LE) ) ) ) ) ) ) ) 

"7
	%	&
 
 
 \
 
 
r   r   N)typingr   peewee	src.modelr   src.model.BaseModelr   src.model.DevilFruitr   1src.model.enums.devil_fruit.DevilFruitAbilityTyper   ,src.model.enums.devil_fruit.DevilFruitStatusr	   r   create_tabler   r   r   <module>r7      s                    ) ) ) ) ) ) + + + + + + S S S S S S I I I I I I%
 %
 %
 %
 %
	 %
 %
 %
P             r   