import subprocess import asyncio from app.database.session import sessionmanager from app.config import URL_BD from app.scripts.initialize_permissions_roles import initialize_permissions_roles from app.scripts.create_initial_user import create_user def alembic_upgrade(): try: print("Iniciando Migrações Alembic") result = subprocess.run(["alembic", "upgrade", "head"], check=True, capture_output=True, text=True) print("Migração Alembic finalizado com sucesso.") print(result.stdout) except subprocess.CalledProcessError as e: print("Erro durante Migrações Alembic.") print(e.stderr) raise async def init_bd(user_email: str, user_password: str, user_username: str, user_full_name: str, user_is_superuser: bool = False): sessionmanager.init(URL_BD) try: print("Inserindo dados iniciais no Banco de Dados") # Criando o usuário inicial user_id = await create_user(user_email, user_password, user_username, user_full_name, user_is_superuser) # Inserindo permissões e papéis await initialize_permissions_roles(user_id) except Exception as e: print(f"Falha na inserção de dados: {e}") if __name__ == "__main__": # Os dados do usuário podem ser passados como argumentos na linha de comando ou coletados de outra maneira email = "admin@sonora.com" password = "admin" username = "UsuarioAdmin" full_name = "Admin" is_superuser = True asyncio.run(init_bd(email, password, username, full_name, is_superuser))