use anyhow::Context;
use tokio::net::TcpListener;
use tower_http::{cors::CorsLayer, trace::TraceLayer};
use tracing::info;
use crate::{router, Config};
pub async fn run(config: Config) -> anyhow::Result<()> {
let app = router(&config)
.layer(TraceLayer::new_for_http())
.layer(CorsLayer::permissive());
let listener = TcpListener::bind(&config.bind_addr)
.await
.with_context(|| format!("failed to bind {}", config.bind_addr))?;
info!(bind_addr = %config.bind_addr, "cedros-admin server listening");
axum::serve(listener, app)
.await
.context("cedros-admin server failed")
}