api-admim/tests/init_db_pytest.py

45 lines
1.6 KiB
Python

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))