use axum::Router; use protolookup::{api::{apidoc::ApiDoc, router::api_router}, cache::refreshing::set_refreshing}; use tokio::net::TcpListener; use tower_http::services::{ServeDir, ServeFile}; use utoipa::OpenApi; use utoipa_axum::router::OpenApiRouter; use utoipa_swagger_ui::SwaggerUi; #[tokio::main] async fn main() { set_refreshing(); let serve_dir = ServeDir::new("public") .not_found_service(ServeFile::new("public/index.html")); let (api_routes, api_doc) = OpenApiRouter::with_openapi(ApiDoc::openapi()) .nest("/api", api_router()) .split_for_parts(); let app = Router::new() .merge(api_routes) .merge(SwaggerUi::new("/api/swagger-ui").url("/api-docs/openapi.json", api_doc)) .fallback_service(serve_dir); let listener = TcpListener::bind("0.0.0.0:3492").await.unwrap(); axum::serve(listener, app).await.unwrap(); }