pub mod axum;
use std::sync::Arc;
use ::axum::{Extension, Json};
pub use logger as log;
use router::BiyardRouter;
#[cfg(feature = "lambda")]
pub mod lambda_adapter;
pub mod logger;
pub mod router;
pub use aide;
pub use by_types::ApiError;
pub type Result<T, E> = std::result::Result<Json<T>, ApiError<E>>;
pub use schemars;
pub fn new() -> BiyardRouter {
BiyardRouter::new()
}
pub async fn serve(
_tcp_listener: tokio::net::TcpListener,
app: BiyardRouter,
) -> std::result::Result<(), Box<dyn std::error::Error>> {
let app = app.layer(tower_http::cors::CorsLayer::permissive());
let mut api = app.open_api;
let app = app
.inner
.finish_api(&mut api)
.layer(Extension(Arc::new(api)));
#[cfg(not(feature = "lambda"))]
axum::serve(_tcp_listener, app).await?;
#[cfg(feature = "lambda")]
{
lambda_runtime::run(lambda_adapter::LambdaAdapter::from(app.into_service()))
.await
.unwrap();
}
Ok(())
}