from functions.database import get_db_connection, Usuario
from functions.rbac import Role, Permission

def migrate_existing_users():
    """Migra os usuários existentes para o novo sistema RBAC"""
    session = get_db_connection()
    
    try:
        # Buscar todos os usuários
        usuarios = session.query(Usuario).all()
        
        # Buscar ou criar role de administrador
        admin_role = session.query(Role).filter_by(nome="Administrador").first()
        if not admin_role:
            admin_role = Role(nome="Administrador", nivel=Role.SECRETARIO_GERAL)
            session.add(admin_role)
        
        # Buscar ou criar role de militante básico
        militante_role = session.query(Role).filter_by(nome="Militante Básico").first()
        if not militante_role:
            militante_role = Role(nome="Militante Básico", nivel=Role.MILITANTE_BASICO)
            session.add(militante_role)
        
        # Atualizar usuários
        for usuario in usuarios:
            # Se o usuário já tem roles, pular
            if usuario.roles:
                continue
            
            # Atribuir role com base no is_admin
            if usuario.is_admin:
                usuario.roles.append(admin_role)
            else:
                usuario.roles.append(militante_role)
        
        session.commit()
        print("Migração de usuários concluída com sucesso!")
        
    except Exception as e:
        session.rollback()
        print(f"Erro durante a migração de usuários: {str(e)}")
        raise e
    finally:
        session.close()

if __name__ == '__main__':
    migrate_existing_users() 