Carga_GTFS/cargaAPI/router/router.py

94 lines
3.7 KiB
Python
Raw Normal View History

2023-09-08 15:48:17 -03:00
from fastapi import APIRouter, Depends
from fastapi.responses import JSONResponse
from sqlalchemy.orm import sessionmaker,Session
from database.db import engine,Base
from carga.procesos import extraer_zip_futuro,extraer_zip,identificar_zip,inspeccionar_txts,transformar_txts,verificar_registros_bd,primera_carga,extraer_db,verificar_registros_antiguos,verificar_registros_nuevos,terminar_carga
Base.prepare(engine)
def get_db():
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
db = SessionLocal()
try:
yield db
finally:
db.close()
almacen_zips = 'zip/'
almacen_txts = 'txts/'
zips_procesados = 'zips_procesados/'
carga_gtfs = APIRouter()
@carga_gtfs.get("/")
def root():
return "Pagina Principal. Use /docs en la url para probrar la carga."
@carga_gtfs.post("/carga")
async def carga(db: Session = Depends(get_db)):
zip_info = identificar_zip(db=db)
zip_ruta = almacen_zips + zip_info.zip + ".zip"
extraer_zip(zip=zip_info,zip_ruta=zip_ruta,db=db)
inspeccionar_txts(zip=zip_info,almacen_txts=almacen_txts,zip_ruta=zip_ruta,db=db)
df_agency, df_calendar, df_routes,df_stop_times, df_stops, df_trips, df_shapes, df_shapes_reference = transformar_txts(zip=zip_info, db=db)
bd_vacia = verificar_registros_bd(db=db)
if bd_vacia:
primera_carga(zip=zip_info,
engine=engine,
df_agency=df_agency,
df_calendar=df_calendar,
df_routes=df_routes,
df_stop_times=df_stop_times,
df_stops=df_stops,
df_trips=df_trips,
df_shapes=df_shapes,
df_shapes_reference=df_shapes_reference,
db=db)
else:
df_db_agency,df_db_routes,df_db_calendar,df_db_stops,df_db_shapes_reference,df_db_shapes,df_db_trips,df_db_stop_times = extraer_db(engine=engine)
verificar_registros_antiguos(zip=zip_info,
df_agency=df_agency,
df_calendar=df_calendar,
df_routes=df_routes,
df_stop_times=df_stop_times,
df_stops=df_stops,
df_trips=df_trips,
df_shapes=df_shapes,
df_shapes_reference=df_shapes_reference,
df_db_agency=df_db_agency,
df_db_routes=df_db_routes,
df_db_calendar=df_db_calendar,
df_db_stops=df_db_stops,
df_db_shapes_reference=df_db_shapes_reference,
df_db_shapes=df_db_shapes,
df_db_trips=df_db_trips,
df_db_stop_times=df_db_stop_times,
db=db)
verificar_registros_nuevos(zip=zip_info,
df_agency=df_agency,
df_calendar=df_calendar,
df_routes=df_routes,
df_stop_times=df_stop_times,
df_stops=df_stops,
df_trips=df_trips,
df_shapes=df_shapes,
df_shapes_reference=df_shapes_reference,
df_db_agency=df_db_agency,
df_db_routes=df_db_routes,
df_db_calendar=df_db_calendar,
df_db_stops=df_db_stops,
df_db_shapes_reference=df_db_shapes_reference,
df_db_shapes=df_db_shapes,
df_db_trips=df_db_trips,
df_db_stop_times=df_db_stop_times,
db=db)
terminar_carga(zip=zip_info,zips_procesados=zips_procesados,db=db)
return "Proceso Finalizado"