49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
import os
|
|
from dotenv import load_dotenv
|
|
from sqlalchemy import create_engine, text
|
|
from alembic import command
|
|
from alembic.config import Config
|
|
|
|
# Cargamos variables de entorno
|
|
load_dotenv()
|
|
|
|
# Construimos la URL de conexión
|
|
DATABASE_URL = os.getenv("DATABASE_URL")
|
|
if not DATABASE_URL:
|
|
DATABASE_URL = (
|
|
f"postgresql://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}"
|
|
f"@{os.getenv('DB_HOST')}:{os.getenv('DB_PORT')}/{os.getenv('DB_NAME')}"
|
|
)
|
|
|
|
# Configuración de Alembic
|
|
alembic_cfg = Config("alembic.ini")
|
|
|
|
# Limpiar alembic_version huérfana si existe
|
|
engine = create_engine(DATABASE_URL)
|
|
|
|
with engine.connect() as conn:
|
|
result = conn.execute(
|
|
text(
|
|
"SELECT EXISTS ("
|
|
"SELECT 1 FROM information_schema.tables "
|
|
"WHERE table_name='alembic_version'"
|
|
")"
|
|
)
|
|
)
|
|
exists = result.scalar()
|
|
|
|
if exists:
|
|
print("⚠️ Tabla alembic_version existente detectada. Eliminando...")
|
|
conn.execute(text("DROP TABLE alembic_version"))
|
|
conn.commit()
|
|
|
|
# Crear migración automáticamente
|
|
print("🛠️ Generando migración...")
|
|
command.revision(alembic_cfg, message="crear tablas", autogenerate=True)
|
|
|
|
# Aplicar migración
|
|
print("⬆️ Aplicando migración (upgrade head)...")
|
|
command.upgrade(alembic_cfg, "head")
|
|
|
|
print("✅ Migración completada correctamente")
|