§
    ­mâi  ã                   óz  — d dl mZmZmZ d dlmZmZmZ d dlm	Z	 d dl
m
Z
  G d„ de¦  «        Z G d„ de¦  «        Z G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    )Ú	BaseModelÚFieldÚfield_validator)ÚOptionalÚListÚUnion)ÚUUID)Údatetimec                   óè   — e Zd ZU  edd¬¦  «        Zeed<    edd¬¦  «        Zee         ed<    edd¬¦  «        Z	ee         ed	<    edd
¬¦  «        Z
eed<    edd¬¦  «        Zee         ed<   dS )ÚPermissionBase.zPermission identifier©ÚdescriptionÚnameNzHuman-readable permission nameÚdisplay_namezPermission descriptionr   zPermission categoryÚcategoryz0API endpoint pattern (e.g., 'POST /api/streams')Úendpoint_pattern)Ú__name__Ú
__module__Ú__qualname__r   r   ÚstrÚ__annotations__r   r   r   r   r   © ó    ú/app/app/schemas/permission.pyr   r      s¿   € € € € € € Ø��cÐ'>Ð?Ñ?Ô?€Dˆ#Ð?Ð?Ñ?Ø"' %¨Ð:ZÐ"[Ñ"[Ô"[€L�(˜3”-Ð[Ð[Ñ[Ø!&  tÐ9QÐ!RÑ!RÔ!R€K�˜#”ÐRÐRÑRØ�E˜#Ð+@ÐAÑAÔA€HˆcÐAÐAÑAØ&+ e¨DÐ>pÐ&qÑ&qÔ&qÐ�h˜s”mÐqÐqÑqÐqÐqr   r   c                   ó   — e Zd ZdS )ÚPermissionCreateN)r   r   r   r   r   r   r   r      s   € € € € € Ø€Dr   r   c                   óÆ   — e Zd ZU dZee         ed<   dZee         ed<   dZee         ed<   dZ	ee         ed<   dZ
ee         ed<   dZee         ed<   dZee         ed<   dS )	ÚPermissionUpdateNr   r   r   r   r   Ú
created_atÚ
updated_at)r   r   r   r   r   r   r   r   r   r   r   r   r
   r    r   r   r   r   r      s¡   € € € € € € Ø€Dˆ(�3Œ-ÐÐÑØ"&€L�(˜3”-Ð&Ð&Ñ&Ø!%€K�˜#”Ð%Ð%Ñ%Ø"€Hˆh�sŒmÐ"Ð"Ñ"Ø&*Ð�h˜s”mÐ*Ð*Ñ*Ø%)€J�˜Ô"Ð)Ð)Ñ)Ø%)€J�˜Ô"Ð)Ð)Ñ)Ð)Ð)r   r   c                   óH   — e Zd ZU eed<   eed<   eed<    G d„ d¦  «        ZdS )ÚPermissionResponseÚidr   r    c                   ó   — e Zd ZdZdS )úPermissionResponse.ConfigTN©r   r   r   Úfrom_attributesr   r   r   ÚConfigr%   "   ó   € € € € € Øˆˆˆr   r(   N)r   r   r   r	   r   r
   r(   r   r   r   r"   r"      s_   € € € € € € Ø€H€H�HØÐÐÑØÐÐÑðð ð ð ð ñ ô ð ð ð r   r"   c                   ó  — e Zd ZU  edd¬¦  «        Zeed<    edd¬¦  «        Zee         ed<    edd¬¦  «        Z	ee         ed	<    edd
¬¦  «        Z
ee         ed<    edd¬¦  «        Zeed<    edd¬¦  «        Zeed<   dS )ÚRoleBase.z	Role namer   r   NzRole descriptionr   zRole color (hex code)ÚcolorzRole icon nameÚiconFzIs default role)Údefaultr   Ú
is_defaultr   z;Role priority for role hierarchy (higher = more privileged)Úpriority)r   r   r   r   r   r   r   r   r   r,   r-   r/   Úboolr0   Úintr   r   r   r+   r+   &   sÝ   € € € € € € Ø��c {Ð3Ñ3Ô3€Dˆ#Ð3Ð3Ñ3Ø!&  tÐ9KÐ!LÑ!LÔ!L€K�˜#”ÐLÐLÑLØ ˜5 Ð3JÐKÑKÔK€Eˆ8�CŒ=ÐKÐKÑKØ˜% Ð2BÐCÑCÔC€Dˆ(�3Œ-ÐCÐCÑCØ�u UÐ8IÐJÑJÔJ€J�ÐJÐJÑJØ�E !Ð1nÐoÑoÔo€HˆcÐoÐoÑoÐoÐor   r+   c                   óL   — e Zd ZU  edd¬¦  «        Zeee                  ed<   dS )Ú
RoleCreateNú List of permission IDs to assignr   Úpermission_ids)	r   r   r   r   r6   r   r   r	   r   r   r   r   r4   r4   /   s;   € € € € € € Ø+0¨5°ÐCeÐ+fÑ+fÔ+f€N�H˜T $œZÔ(ÐfÐfÑfÐfÐfr   r4   c                   ó  — e Zd ZU dZee         ed<   dZee         ed<   dZee         ed<   dZ	ee         ed<   dZ
ee         ed<   dZee         ed<    edd¬	¦  «        Zeee                  ed
<   dZee         ed<   dZee         ed<   dS )Ú
RoleUpdateNr   r   r,   r-   r/   r0   r5   r   r6   r   r    )r   r   r   r   r   r   r   r   r,   r-   r/   r1   r0   r2   r   r6   r   r	   r   r
   r    r   r   r   r8   r8   3   sÝ   € € € € € € Ø€Dˆ(�3Œ-ÐÐÑØ!%€K�˜#”Ð%Ð%Ñ%Ø€Eˆ8�CŒ=ÐÐÑØ€Dˆ(�3Œ-ÐÐÑØ!%€J�˜”Ð%Ð%Ñ%Ø"€Hˆh�sŒmÐ"Ð"Ñ"Ø+0¨5°ÐCeÐ+fÑ+fÔ+f€N�H˜T $œZÔ(ÐfÐfÑfØ%)€J�˜Ô"Ð)Ð)Ñ)Ø%)€J�˜Ô"Ð)Ð)Ñ)Ð)Ð)r   r8   c                   óÚ   — e Zd ZU eed<   eed<   eed<   g Zee         ed<    e	dd¬¦  «        e
d„ ¦   «         ¦   «         Z e	dd¬¦  «        e
d	„ ¦   «         ¦   «         Z G d
„ d¦  «        ZdS )ÚRoleResponser#   r   r    Úpermissionsr/   Úbefore)Úmodec                 óV   — |€dS t          |t          ¦  «        r|S t          |¦  «        S )NF)Ú
isinstancer1   )ÚclsÚvs     r   Úvalidate_is_defaultz RoleResponse.validate_is_defaultE   s0   € ð ˆ9Ø�5Ý�a�ÑÔð 	ØˆHÝ�A‰wŒwˆr   c                 óœ   — |€g S g }|D ]B}t          |d¦  «        r|                     |j        ¦  «         Œ-|                     |¦  «         ŒC|S )zCConvert RolePermission objects to Permission objects automatically.NÚ
permission)ÚhasattrÚappendrD   )r@   rA   ÚresultÚitems       r   Úconvert_role_permissionsz%RoleResponse.convert_role_permissionsN   se   € ð ˆ9ØˆIØˆØð 	$ð 	$ˆDå�t˜\Ñ*Ô*ð $Ø—’˜dœoÑ.Ô.Ð.Ð.à—’˜dÑ#Ô#Ð#Ð#Øˆr   c                   ó   — e Zd ZdZdS )úRoleResponse.ConfigTNr&   r   r   r   r(   rK   ^   r)   r   r(   N)r   r   r   r	   r   r
   r;   r   r"   r   ÚclassmethodrB   rI   r(   r   r   r   r:   r:   ?   sÝ   € € € € € € Ø€H€H�HØÐÐÑØÐÐÑØ,.€K�Ð(Ô)Ð.Ð.Ñ.à€_�\¨Ð1Ñ1Ô1Øðð ñ „[ñ 2Ô1ðð €_�]¨Ð2Ñ2Ô2Øðð ñ „[ñ 3Ô2ððð ð ð ð ñ ô ð ð ð r   r:   c                   ór   — e Zd ZU  edd¬¦  «        Zeed<    edd¬¦  «        Zeed<   dZe	e
         ed<   dS )	ÚRolePermissionCreate.zRole ID to assign permission tor   Úrole_idzPermission ID to assignÚpermission_idNr   )r   r   r   r   rO   r	   r   rP   r   r   r
   r   r   r   rN   rN   b   sg   € € € € € € Ø�E˜#Ð+LÐMÑMÔM€GˆTÐMÐMÑMØ˜% Ð1JÐKÑKÔK€M�4ÐKÐKÑKØ%)€J�˜Ô"Ð)Ð)Ñ)Ð)Ð)r   rN   c                   ó@   — e Zd ZU  edd¬¦  «        Zee         ed<   dS )ÚRolePermissionBulkUpdate.r5   r   r6   N)r   r   r   r   r6   r   r	   r   r   r   r   rR   rR   h   s6   € € € € € € Ø!&  sÐ8ZÐ![Ñ![Ô![€N�D˜”JÐ[Ð[Ñ[Ð[Ð[r   rR   c                   ó:   — e Zd ZU eed<   eed<   ee         ed<   dS )ÚRolePermissionsResponserO   Ú	role_namer;   N)r   r   r   r	   r   r   r   r"   r   r   r   rT   rT   l   s6   € € € € € € Ø€M€M�MØ€N€N�NØÐ(Ô)Ð)Ð)Ñ)Ð)Ð)r   rT   N)Úpydanticr   r   r   Útypingr   r   r   Úuuidr	   r
   r   r   r   r"   r+   r4   r8   r:   rN   rR   rT   r   r   r   ú<module>rY      s^  ðØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðrð rð rð rð r�Yñ rô rð rð	ð 	ð 	ð 	ð 	�~ñ 	ô 	ð 	ð*ð *ð *ð *ð *�yñ *ô *ð *ðð ð ð ð ˜ñ ô ð ðpð pð pð pð pˆyñ pô pð pðgð gð gð gð g�ñ gô gð gð	*ð 	*ð 	*ð 	*ð 	*�ñ 	*ô 	*ð 	*ð ð  ð  ð  ð  �8ñ  ô  ð  ðF*ð *ð *ð *ð *˜9ñ *ô *ð *ð\ð \ð \ð \ð \˜yñ \ô \ð \ð*ð *ð *ð *ð *˜iñ *ô *ð *ð *ð *r   