Something went wrong. Try again.
Live STIB-MIVB departures on the Pebble Time 2. It covers the bus, tram, and metro network of Brussels
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142use stibble_server::{api, dev_mock, state, storage::Store};
#[tokio::main]async fn main() { tracing_subscriber::fmt() .with_env_filter( tracing_subscriber::EnvFilter::try_from_default_env().unwrap_or_else(|_| "info".into()), ) .init(); let database = std::env::var("STIBBLE_DB").unwrap_or_else(|_| "/tmp/stibble-mock.sqlite".into()); let extension = std::env::var("SPATIALITE_EXTENSION").expect("SPATIALITE_EXTENSION is required"); let store = Store::open(database, extension).await.expect("open spatial store"); dev_mock::seed(&store).await.expect("seed spatial store"); if let Some(refresh_interval_ms) = std::env::var("STIBBLE_MOCK_REFRESH_INTERVAL_MS") .ok() .and_then(|value| value.parse::<u64>().ok()) .filter(|interval_ms| *interval_ms > 0) { let refresh_store = store.clone(); tokio::spawn(async move { let refresh_interval = std::time::Duration::from_millis(refresh_interval_ms); loop { tokio::time::sleep(refresh_interval).await; match dev_mock::refresh(&refresh_store).await { Ok(()) => tracing::info!("mock refresh committed"), Err(error) => tracing::warn!("mock refresh failed: {error:#}"), } } }); } let (train_refresh, _train_refresh_rx) = tokio::sync::mpsc::channel(64); let app_state = state::AppState::new(store, train_refresh); let addr = std::env::var("BIND_ADDR").unwrap_or_else(|_| "0.0.0.0:8080".into()); let listener = tokio::net::TcpListener::bind(&addr).await.expect("bind"); tracing::info!("actual mock data server listening on {addr}"); axum::serve(listener, api::router(app_state)) .await .expect("serve");}