use tokio::net::TcpListener; use crate::router::App; use axum::routing::{get, post}; pub struct Server { pub host: String, pub port: u16, } impl Server { pub fn new(host: impl Into, port: u16) -> Self { Server { host: host.into(), port, } } pub async fn run(&mut self) -> anyhow::Result<()> { let listener = TcpListener::bind(format!( "{}:{}", self.host, self.port )).await?; println!("Server is running on {}:{}", self.host, self.port); let app = App::new(); let router = app.router .route("/echo", post(App::echo)) .route("/create/player", post(App::create_player)) .route("/create/lobby", post(App::create_lobby)) .route("/delete/player/{player_id}", get(App::delete_player)) .route("/delete/lobby/{lobby_id}", get(App::delete_lobby)) .with_state(app.db); axum::serve(listener, router).await.unwrap(); Ok(()) } }