§
    ­mâi×  ã                   ó:   — d Z ddlmZ ddlZdZdZdZdZd„ Z	d„ Z
dS )zpadd_permission_system

Revision ID: d572cc74f19a
Revises: 220d438a789f
Create Date: 2026-04-17 10:28:06.359750

é    )ÚopNÚd572cc74f19aÚ220d438a789fc                  óä  — t          j        dt          j        dt          j        ¦   «         d¬¦  «        t          j        dt          j        d¬¦  «        d¬¦  «        t          j        dt          j        d	¬¦  «        d
¬¦  «        t          j        dt          j        d¬¦  «        d¬¦  «        t          j        dt          j        d¬¦  «        d
¬¦  «        t          j        dt          j        d
¬¦  «        d
¬¦  «        t          j        dt          j        d
¬¦  «        d
¬¦  «        t          j        d¦  «        ¦	  «	         t          j        t          j	        d¦  «        ddgd¬¦  «         t          j        t          j	        d¦  «        ddgd
¬¦  «         t          j        dt          j        dt          j        ¦   «         d¬¦  «        t          j        dt          j        d¬¦  «        d¬¦  «        t          j        dt          j        d	¬¦  «        d
¬¦  «        t          j        dt          j
        ¦   «         d
¬¦  «        t          j        dt          j        ¦   «         d
¬¦  «        t          j        dt          j        d
¬¦  «        d
¬¦  «        t          j        dt          j        d
¬¦  «        d
¬¦  «        t          j        d¦  «        ¦	  «	         t          j        t          j	        d¦  «        ddgd
¬¦  «         t          j        dt          j        dt          j        ¦   «         d¬¦  «        t          j        dt          j        ¦   «         d¬¦  «        t          j        dt          j        ¦   «         d¬¦  «        t          j        dt          j        d
¬¦  «        d
¬¦  «        t          j        dgdgd¬¦  «        t          j        dgdgd¬¦  «        t          j        d¦  «        ¦  «         t          j        d t          j        dt          j        ¦   «         d
¬¦  «        ¦  «         t          j        d d ddgdgd!¬¦  «         t          j        d d"¦  «         d#d$lm}  d#d%lm} d#d l}t          j        ¦   «         } | |¬&¦  «        }	  |¦   «         } |¦   «         } |¦   «         } |¦   «         } |¦   «         }	|j                             ¦   «         }
|                     t          j        d'¦  «        |d(d)d
d|
|
d*œ|d+d,d
d-|
|
d*œ|d.d/d
d0|
|
d*œ|d1d2d
d3|
|
d*œ|	d4d5d
d6|
|
d*œg¦  «         |                     t          j        d7¦  «        ¦  «         |                     t          j        d8¦  «        ¦  «         |                     ¦   «          n(# t4          $ r}|                     ¦   «          |‚d }~ww xY w	 |                     ¦   «          d S # |                     ¦   «          w xY w)9NÚpermissionsÚidF)ÚnullableÚnameéd   ©ÚlengthÚdescriptioniô  TÚcategoryé2   Úendpoint_patternéÈ   Ú
created_at)ÚtimezoneÚ
updated_atÚix_permissions_category)ÚuniqueÚix_permissions_nameÚrolesÚ
is_defaultÚpriorityÚix_roles_nameÚrole_permissionsÚrole_idÚpermission_idzpermissions.idÚCASCADE)Úondeletezroles.idÚuserszSET NULLÚroler   )ÚSession)Úuuid4)Úbindz«INSERT INTO roles (id, name, description, is_default, priority, created_at, updated_at) VALUES (:id, :name, :description, :is_default, :priority, :created_at, :updated_at)ÚadminzAdministrator with full access)r   r
   r   r   r   r   r   Úmodz)Moderator with user and stream managementéP   Úcreatorz&Content creator with stream managementé<   Ú
subscriberz'Subscriber with read and comment accessé(   ÚviewerzViewer with read-only accessé   aR  
                UPDATE users 
                SET role_id = (
                    SELECT id FROM roles 
                    WHERE name = 'admin'
                )
                WHERE id = (
                    SELECT id FROM users 
                    ORDER BY created_at ASC 
                    LIMIT 1
                )
            ax  
                UPDATE users 
                SET role_id = (
                    SELECT id FROM roles 
                    WHERE name = 'viewer'
                )
                WHERE role_id IS NULL
                AND id != (
                    SELECT id FROM users 
                    ORDER BY created_at ASC 
                    LIMIT 1
                )
            )r   Úcreate_tableÚsaÚColumnÚUUIDÚStringÚDateTimeÚPrimaryKeyConstraintÚcreate_indexÚfÚBooleanÚIntegerÚForeignKeyConstraintÚ
add_columnÚcreate_foreign_keyÚdrop_columnÚsqlalchemy.ormr$   Úuuidr%   ÚdatetimeÚget_bindÚutcnowÚexecuteÚtextÚcommitÚ	ExceptionÚrollbackÚclose)r$   r%   rA   r&   ÚsessionÚadmin_idÚmod_idÚ
creator_idÚsubscriber_idÚ	viewer_idÚnowÚes               úI/app/alembic/versions/20260417_1028_d572cc74f19a_add_permission_system.pyÚupgraderS      s  € å„O�MÝ„Iˆd•B”G‘I”I¨Ð.Ñ.Ô.Ý„Iˆf•b”i sÐ+Ñ+Ô+°eÐ<Ñ<Ô<Ý„Iˆm�RœY¨cÐ2Ñ2Ô2¸TÐBÑBÔBÝ„Iˆj�"œ)¨2Ð.Ñ.Ô.¸Ð?Ñ?Ô?Ý„IÐ ¥"¤)°3Ð"7Ñ"7Ô"7À$ÐGÑGÔGÝ„Iˆl�BœK°Ð6Ñ6Ô6ÀÐFÑFÔFÝ„Iˆl�BœK°Ð6Ñ6Ô6ÀÐFÑFÔFÝÔ˜DÑ!Ô!ñ	ô 	ð 	õ „O•B”DÐ2Ñ3Ô3°]ÀZÀLÐY^Ð_Ñ_Ô_Ð_Ý„O•B”DÐ.Ñ/Ô/°ÀÀÐQUÐVÑVÔVÐVÝ„O�GÝ„Iˆd•B”G‘I”I¨Ð.Ñ.Ô.Ý„Iˆf•b”i rÐ*Ñ*Ô*°UÐ;Ñ;Ô;Ý„Iˆm�RœY¨cÐ2Ñ2Ô2¸TÐBÑBÔBÝ„Iˆl�BœJ™LœL°4Ð8Ñ8Ô8Ý„Iˆj�"œ*™,œ,°Ð6Ñ6Ô6Ý„Iˆl�BœK°Ð6Ñ6Ô6ÀÐFÑFÔFÝ„Iˆl�BœK°Ð6Ñ6Ô6ÀÐFÑFÔFÝÔ˜DÑ!Ô!ñ	ô 	ð 	õ „O•B”D˜Ñ)Ô)¨7°V°HÀTÐJÑJÔJÐJÝ„OÐ&Ý„Iˆd•B”G‘I”I¨Ð.Ñ.Ô.Ý„Iˆi�œ™œ¨UÐ3Ñ3Ô3Ý„Iˆo�rœw™yœy°5Ð9Ñ9Ô9Ý„Iˆl�BœK°Ð6Ñ6Ô6ÀÐFÑFÔFÝÔ˜_Ð-Ð0@Ð/AÈIÐVÑVÔVÝÔ˜Y˜K¨*¨À	ÐJÑJÔJÝÔ˜DÑ!Ô!ñô ð õ „M�'�2œ9 Yµ´±	´	ÀDÐIÑIÔIÑJÔJÐJÝÔ˜$ ¨°9°+À¸vÐPZÐ[Ñ[Ô[Ð[Ý„N�7˜FÑ#Ô#Ð#ð 'Ð&Ð&Ð&Ð&Ð&ØÐÐÐÐÐØ€O€O€OåŒ;‰=Œ=€DØˆg˜4Ð Ñ Ô €Gð<à�5‘7”7ˆØ�‘”ˆØ�U‘W”Wˆ
Ø˜™œˆØ�E‘G”Gˆ	àÔ×&Ò&Ñ(Ô(ˆà�ŠÝŒGð  Bñ  Cô  Cà¨ÐAaÐquð  DGð  WZð  jmð  nð  nØ uÐ=hÐx|ð  KMð  ]`ð  psð  tð  tØ!¨9ÐEmð  ~Bð  PRð  beð  uxð  yð  yØ$¨lÐKtð  EIð  WYð  ilð  |ð  @ð  @Ø ¨(ÐCaÐquð  DFð  VYð  ilð  mð  mðñ		
ô 		
ð 		
ð 	�ŠÝŒGð ñ ô ñ	
ô 	
ð 	
ð  	�ŠÝŒGð ñ ô ñ	
ô 	
ð 	
ð  	�ŠÑÔÐÐøÝð ð ð Ø×ÒÑÔÐØˆøøøøðøøøð 	ð
 	�Š‰Œˆˆˆøˆ�Š‰Œˆˆøøøs+   ÒDV ÖW Ö
V?Ö$V:Ö:V?Ö?W ×W/c            
      óh  — t          j        dt          j        dt          j        d¬¦  «        t          j        d¦  «        dd¬¦  «        ¦  «         t          j        d dd	¬
¦  «         t          j        dd¦  «         t          j        d¦  «         t          j	        t          j
        d¦  «        d¬¦  «         t          j        d¦  «         t          j	        t          j
        d¦  «        d¬¦  «         t          j	        t          j
        d¦  «        d¬¦  «         t          j        d¦  «         d S )Nr"   r#   r/   r   z'user'::character varyingFT)Úserver_defaultÚautoincrementr	   Ú
foreignkey)Útype_r   r   r   r   )Ú
table_namer   r   r   )r   r<   r1   r2   ÚVARCHARrE   Údrop_constraintr>   Ú
drop_tableÚ
drop_indexr8   © ó    rR   Ú	downgrader`   ƒ   s  € å„M�'�2œ9 V­R¬Z¸rÐ-BÑ-BÔ-BÕSUÔSZÐ[vÑSwÔSwð  HMð  X\ð  ]ñ  ]ô  ]ñ  ^ô  ^ð  ^ÝÔ�t˜W¨LÐ9Ñ9Ô9Ð9Ý„N�7˜IÑ&Ô&Ð&Ý„MÐ$Ñ%Ô%Ð%Ý„M•"”$�Ñ'Ô'°GÐ<Ñ<Ô<Ð<Ý„M�'ÑÔÐÝ„M•"”$Ð,Ñ-Ô-¸-ÐHÑHÔHÐHÝ„M•"”$Ð0Ñ1Ô1¸mÐLÑLÔLÐLÝ„M�-Ñ Ô Ð Ð Ð r_   )Ú__doc__Úalembicr   Ú
sqlalchemyr1   ÚrevisionÚdown_revisionÚbranch_labelsÚ
depends_onrS   r`   r^   r_   rR   ú<module>rh      sq   ððð ð Ð Ð Ð Ð Ð Ø Ð Ð Ð ð €Ø€Ø€Ø€
ðkð kð kð`
!ð 
!ð 
!ð 
!ð 
!r_   