o
    "Æi|  ã                   @   sn   d Z 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 G dd„ dee	eef ƒZee	ƒZd	S )
z
Menu CRUD operations
é    )ÚListÚOptional)ÚSession)ÚCRUDBase)ÚMenu)Ú
MenuCreateÚ
MenuUpdatec                
   @   sŠ   e Zd ZdZdddœdedededee fd	d
„Zdede	de
e fdd„Zddœdede
e dee fdd„Zdedee fdd„ZdS )ÚCRUDMenuzCRUD operations for Menur   éd   )ÚskipÚlimitÚdbr   r   Úreturnc                K   s.   |  | j¡ | jjdk¡}| |¡ |¡ ¡ S )zŽ
        Get multiple menus without permission filtering
        Menus are in public schema and accessible to all authenticated users
        F)ÚqueryÚmodelÚfilterÚ
is_deletedÚoffsetr   Úall)Úselfr   r   r   Úkwargsr   © r   ú5/lsinfo/ai/hellotax_ai/base_platform/app/crud/menu.pyÚ	get_multi   s   zCRUDMenu.get_multiÚcodec                C   s"   |  t¡ tj|ktjdk¡ ¡ S )zGet menu by codeF)r   r   r   r   r   Úfirst)r   r   r   r   r   r   Úget_by_code   s   "zCRUDMenu.get_by_codeN)Ú	parent_idr   c                C   s^   |  t¡ tjdktjdk¡}|du r| tj d¡¡}n| tj|k¡}| tj 	¡ ¡ 
¡ S )zGet menu tree structureFTN)r   r   r   r   Ú	is_activer   Úis_Úorder_byÚ
sort_orderÚascr   )r   r   r   r   r   r   r   Úget_tree!   s
   zCRUDMenu.get_treec                 C   s.   |  t¡ tjdktjdk¡ tj ¡ ¡ ¡ S )zGet all active menusFT)	r   r   r   r   r   r    r!   r"   r   )r   r   r   r   r   Úget_all_active,   s   
þýzCRUDMenu.get_all_active)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úintr   r   r   Ústrr   r   r#   r$   r   r   r   r   r	      s     ûþüû
ù$r	   N)r(   Útypingr   r   Úsqlalchemy.ormr   Úapp.crud.baser   Úapp.models.menur   Úapp.schemas.menur   r   r	   Úmenur   r   r   r   Ú<module>   s    )