Skip to content
Clone
5dd93db
37 lines 1.5 KB Rust
pub mod openapi;
use axum::Router;
use export::AppState;
use session::{SessionLayer, store};
use tower_http::trace::{DefaultMakeSpan, DefaultOnRequest, DefaultOnResponse, TraceLayer};
use tracing::Level;
pub async fn router(state: AppState) -> Result<Router, axum_session::SessionError> {
let store = store::connect(state.redis.clone(), &state.config.session).await?;
let auth = auth::services::AuthService::new(state.clone());
let issues = issues::services::service::IssueService::new(state.clone());
let space = space::services::service::SpaceService::new(state.clone());
let user = user::services::service::UserService::new(state.clone());
let git = git::service::GitService::new(state);
let router: Router = Router::new()
.merge(auth::routes::router(auth.clone()).with_state(auth))
.merge(issues::routes::router(issues.clone()).with_state(issues))
.merge(space::routes::router(space.clone()).with_state(space))
.merge(user::routes::router(user.clone()).with_state(user))
.merge(git::routes::router(git.clone()).with_state(git))
.layer(SessionLayer::new(store))
.layer(
TraceLayer::new_for_http()
.make_span_with(
DefaultMakeSpan::new()
.level(Level::INFO)
.include_headers(false),
)
.on_request(DefaultOnRequest::new().level(Level::INFO))
.on_response(DefaultOnResponse::new().level(Level::INFO)),
);
Ok(router)
}