import asyncio import subprocess from app.database.session import sessionmanager from app.config import URL_BD async def atualizar_todos_inquilinos(): # Inicializar o gerenciador de sessão sessionmanager.init(URL_BD) try: # Buscar a lista de esquemas (nomes dos inquilinos) async with sessionmanager.session() as session: result = await session.execute( """ SELECT schema_name FROM information_schema.schemata WHERE schema_name NOT IN ('public', 'information_schema', 'pg_catalog', 'shared', 'pg_toast_temp_1', 'pg_temp_1', 'pg_toast'); """ ) tenants = [row[0] for row in result.fetchall()] print(f"Encontrados {len(tenants)} inquilinos para atualizar: {tenants}") for tenant in tenants: print(f"Iniciando migração para o inquilino: {tenant}") try: subprocess.run( ["alembic", "-x", f"tenant={tenant}", "upgrade", "head"], check=True, capture_output=True, text=True ) print(f"Migração para o inquilino '{tenant}' concluída com sucesso.") except subprocess.CalledProcessError as e: print(f"Erro durante migração para o inquilino '{tenant}':") print("Saída padrão (stdout):", e.stdout) print("Erro padrão (stderr):", e.stderr) print("Código de saída:", e.returncode) finally: await sessionmanager.close() if __name__ == "__main__": asyncio.run(atualizar_todos_inquilinos())