feat: add logic for journey->train identifier resolving, add recording of journeys, build api bearer auth
This commit is contained in:
48
src/main.rs
48
src/main.rs
@ -1,3 +1,47 @@
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
use std::net::SocketAddr;
|
||||
use axum::Router;
|
||||
use axum::routing::{get, post};
|
||||
use sqlx::migrate::MigrateError;
|
||||
use tokio::net::TcpListener;
|
||||
use crate::config::IceBingoConfig;
|
||||
use crate::model::app::AppState;
|
||||
|
||||
mod config;
|
||||
pub(crate) mod model;
|
||||
mod api;
|
||||
pub(crate) mod error;
|
||||
pub(crate) mod util;
|
||||
mod database;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
println!("Starting up");
|
||||
let config = IceBingoConfig::load("config.yaml")
|
||||
.await.expect("Unable to load config");
|
||||
|
||||
let state: AppState = AppState::new(config.clone()).await.unwrap();
|
||||
//migrate(state.clone()).await.expect("Database migration failed");
|
||||
|
||||
let router = build_router(state);
|
||||
let listener = listen(config).await;
|
||||
axum::serve::serve(listener, router).await.unwrap()
|
||||
}
|
||||
|
||||
fn build_router(state: AppState) -> Router {
|
||||
Router::new()
|
||||
.route("/webhook/travelynx", post(api::handlers::webhook::receive_travelynx))
|
||||
.route("/card/", get(api::handlers::bingo_card::get))
|
||||
.with_state(state)
|
||||
}
|
||||
|
||||
async fn listen(config: IceBingoConfig) -> TcpListener {
|
||||
let socket_addr: SocketAddr = (config.http.bind_address, config.http.port).into();
|
||||
println!("Listening on {}", socket_addr);
|
||||
TcpListener::bind(socket_addr).await.unwrap()
|
||||
}
|
||||
|
||||
async fn migrate(state: AppState) -> Result<(), MigrateError>{
|
||||
sqlx::migrate!("./src/sql/migrations")
|
||||
.run(&mut state.db.acquire().await?)
|
||||
.await
|
||||
}
|
Reference in New Issue
Block a user