fix: Enum RouteStatus uppercase conflict with postgres type
This commit is contained in:
140
backend/inject_routes.py
Normal file
140
backend/inject_routes.py
Normal file
@ -0,0 +1,140 @@
|
||||
"""
|
||||
Script de emergencia: Inyectar rutas directamente en la BD de producción
|
||||
Ejecutar desde el servidor Render o con acceso directo a la BD.
|
||||
|
||||
USO: python inject_routes.py
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
|
||||
# Añadir el path del backend
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from sqlmodel import Session, create_engine, select, SQLModel
|
||||
from app.models.route import Route, RouteStatus
|
||||
from app.core.config import settings
|
||||
|
||||
# Rutas de bus más importantes de Boquete / Chiriquí
|
||||
SAMPLE_ROUTES = [
|
||||
{
|
||||
"name": "Boquete - David",
|
||||
"origin_city": "Boquete",
|
||||
"destination_city": "David",
|
||||
"color": "#FEE715",
|
||||
"direction": "outbound",
|
||||
"distance_km": 38.0,
|
||||
"estimated_duration_minutes": 55,
|
||||
"average_speed_kmh": 40.0,
|
||||
"status": RouteStatus.ACTIVE,
|
||||
},
|
||||
{
|
||||
"name": "David - Boquete",
|
||||
"origin_city": "David",
|
||||
"destination_city": "Boquete",
|
||||
"color": "#FEE715",
|
||||
"direction": "inbound",
|
||||
"distance_km": 38.0,
|
||||
"estimated_duration_minutes": 55,
|
||||
"average_speed_kmh": 40.0,
|
||||
"status": RouteStatus.ACTIVE,
|
||||
},
|
||||
{
|
||||
"name": "Boquete - Caldera",
|
||||
"origin_city": "Boquete",
|
||||
"destination_city": "Caldera",
|
||||
"color": "#4CAF50",
|
||||
"direction": "outbound",
|
||||
"distance_km": 22.0,
|
||||
"estimated_duration_minutes": 35,
|
||||
"average_speed_kmh": 38.0,
|
||||
"status": RouteStatus.ACTIVE,
|
||||
},
|
||||
{
|
||||
"name": "Caldera - Boquete",
|
||||
"origin_city": "Caldera",
|
||||
"destination_city": "Boquete",
|
||||
"color": "#4CAF50",
|
||||
"direction": "inbound",
|
||||
"distance_km": 22.0,
|
||||
"estimated_duration_minutes": 35,
|
||||
"average_speed_kmh": 38.0,
|
||||
"status": RouteStatus.ACTIVE,
|
||||
},
|
||||
{
|
||||
"name": "David - Paso Canoas",
|
||||
"origin_city": "David",
|
||||
"destination_city": "Paso Canoas",
|
||||
"color": "#2196F3",
|
||||
"direction": "outbound",
|
||||
"distance_km": 52.0,
|
||||
"estimated_duration_minutes": 70,
|
||||
"average_speed_kmh": 45.0,
|
||||
"status": RouteStatus.ACTIVE,
|
||||
},
|
||||
{
|
||||
"name": "David - Cerro Punta",
|
||||
"origin_city": "David",
|
||||
"destination_city": "Cerro Punta",
|
||||
"color": "#9C27B0",
|
||||
"direction": "outbound",
|
||||
"distance_km": 75.0,
|
||||
"estimated_duration_minutes": 100,
|
||||
"average_speed_kmh": 45.0,
|
||||
"status": RouteStatus.ACTIVE,
|
||||
},
|
||||
{
|
||||
"name": "David - Volcán",
|
||||
"origin_city": "David",
|
||||
"destination_city": "Volcán",
|
||||
"color": "#FF5722",
|
||||
"direction": "outbound",
|
||||
"distance_km": 62.0,
|
||||
"estimated_duration_minutes": 85,
|
||||
"average_speed_kmh": 44.0,
|
||||
"status": RouteStatus.ACTIVE,
|
||||
},
|
||||
{
|
||||
"name": "Boquete - Dolega",
|
||||
"origin_city": "Boquete",
|
||||
"destination_city": "Dolega",
|
||||
"color": "#00BCD4",
|
||||
"direction": "outbound",
|
||||
"distance_km": 28.0,
|
||||
"estimated_duration_minutes": 40,
|
||||
"average_speed_kmh": 42.0,
|
||||
"status": RouteStatus.ACTIVE,
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def inject_routes():
|
||||
db_url = settings.get_database_url
|
||||
engine = create_engine(db_url, echo=True)
|
||||
|
||||
with Session(engine) as session:
|
||||
inserted = 0
|
||||
skipped = 0
|
||||
|
||||
for route_data in SAMPLE_ROUTES:
|
||||
# Verificar si ya existe
|
||||
existing = session.exec(
|
||||
select(Route).where(Route.name == route_data["name"])
|
||||
).first()
|
||||
|
||||
if existing:
|
||||
print(f" [SKIP] Ya existe: {route_data['name']}")
|
||||
skipped += 1
|
||||
continue
|
||||
|
||||
route = Route(**route_data)
|
||||
session.add(route)
|
||||
print(f" [ADD] {route_data['name']} ({route_data['origin_city']} → {route_data['destination_city']})")
|
||||
inserted += 1
|
||||
|
||||
session.commit()
|
||||
print(f"\n✅ Listo: {inserted} rutas insertadas, {skipped} ya existían.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("🚌 Inyectando rutas de bus en producción...\n")
|
||||
inject_routes()
|
||||
Reference in New Issue
Block a user