44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
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())
|