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