revert to septa api for rt tracking
This commit is contained in:
parent
f407992035
commit
a335f14b14
18 changed files with 535 additions and 355 deletions
|
|
@ -1,12 +1,10 @@
|
|||
use actix_web::{get, web::{self, Data}, HttpRequest, HttpResponse, Responder};
|
||||
use anyhow::anyhow;
|
||||
use std::{time::Instant, sync::Arc};
|
||||
use libseptastic::{route::RouteType, stop_schedule::Trip};
|
||||
use std::{collections::HashSet, sync::Arc, time::Instant};
|
||||
use libseptastic::{direction, route::RouteType, stop_schedule::Trip};
|
||||
use serde::{Serialize, Deserialize};
|
||||
use askama::Template;
|
||||
|
||||
use crate::AppState;
|
||||
use crate::database;
|
||||
|
||||
#[get("/routes")]
|
||||
async fn get_routes_html(req: HttpRequest, state: Data<Arc<AppState>>) -> impl Responder {
|
||||
|
|
@ -15,8 +13,7 @@ async fn get_routes_html(req: HttpRequest, state: Data<Arc<AppState>>) -> impl R
|
|||
async move {
|
||||
let start_time = Instant::now();
|
||||
|
||||
let all_routes = database::get_all_routes(&mut statex.database.begin().await?).await?;
|
||||
|
||||
let all_routes: Vec<libseptastic::route::Route> = statex.gtfs_service.get_routes();
|
||||
let rr_routes = all_routes.clone().into_iter().filter(|x| x.route_type == RouteType::RegionalRail).collect();
|
||||
let subway_routes = all_routes.clone().into_iter().filter(|x| x.route_type == RouteType::SubwayElevated).collect();
|
||||
let trolley_routes = all_routes.clone().into_iter().filter(|x| x.route_type == RouteType::Trolley).collect();
|
||||
|
|
@ -40,7 +37,7 @@ async fn get_routes_html(req: HttpRequest, state: Data<Arc<AppState>>) -> impl R
|
|||
|
||||
#[get("/routes.json")]
|
||||
async fn get_routes_json(state: Data<Arc<AppState>>) -> impl Responder {
|
||||
let all_routes = database::get_all_routes(&mut state.database.begin().await.unwrap()).await.unwrap();
|
||||
let all_routes: Vec<libseptastic::route::Route> = state.gtfs_service.get_routes();
|
||||
HttpResponse::Ok().json(all_routes)
|
||||
}
|
||||
|
||||
|
|
@ -58,11 +55,15 @@ pub struct RouteResponse {
|
|||
}
|
||||
|
||||
async fn get_route_info(route_id: String, state: Data<Arc<AppState>>) -> ::anyhow::Result<RouteResponse> {
|
||||
let mut tx = state.database.begin().await?;
|
||||
let route = state.gtfs_service.get_route(route_id.clone())?;
|
||||
let mut trips = state.gtfs_service.get_schedule(route_id)?;
|
||||
|
||||
let route = database::get_route_by_id(route_id.clone(), &mut tx).await?;
|
||||
let directions = database::get_direction_by_route_id(route_id.clone(), &mut tx).await?;
|
||||
let mut trips = database::get_schedule_by_route_id(route_id.clone(), &mut tx).await?;
|
||||
let mut seen = HashSet::new();
|
||||
let directions: Vec<_> = trips
|
||||
.iter()
|
||||
.map(|x| x.direction.clone())
|
||||
.filter(|dir| seen.insert(dir.direction.to_string()))
|
||||
.collect();
|
||||
|
||||
state.trip_tracking_service.annotate_trips(&mut trips);
|
||||
|
||||
|
|
@ -127,7 +128,7 @@ async fn api_get_route(state: Data<Arc<AppState>>, path: web::Path<String>) -> i
|
|||
#[get("/api/route/{route_id}/schedule")]
|
||||
async fn api_get_schedule(state: Data<Arc<AppState>>, path: web::Path<String>) -> impl Responder {
|
||||
let route_id = path.into_inner();
|
||||
let route_r = database::get_schedule_by_route_id(route_id, &mut state.database.begin().await.unwrap()).await;
|
||||
let route_r: anyhow::Result<i32> = Ok(5);
|
||||
|
||||
if let Ok(route) = route_r {
|
||||
HttpResponse::Ok().json(route)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue