diff --git a/src/handler.rs b/src/handler.rs index 8578295..2f315f2 100644 --- a/src/handler.rs +++ b/src/handler.rs @@ -1,3 +1,4 @@ +use std::sync::Arc; use askama::Template; use axum::extract::{Path, Query, State}; use axum::Form; @@ -17,7 +18,7 @@ pub struct PageQuery { pub async fn index( - State(state): State, + State(state): State>, Query(q): Query, ) -> Result> { let tpl = MemberService::index(&state, q).await?; @@ -26,7 +27,7 @@ pub async fn index( } pub async fn detail( - State(state): State, + State(state): State>, Path(id): Path, ) -> Result> { let tpl = MemberService::detail(&state, id).await?; @@ -43,7 +44,7 @@ pub async fn add_ui() -> Result> { pub async fn add( - State(state): State, + State(state): State>, Form(frm): Form, ) -> Result<(StatusCode, HeaderMap, ())> { MemberService::add(&state, frm).await?; @@ -52,7 +53,7 @@ pub async fn add( pub async fn edit_ui( - State(state): State, + State(state): State>, Path(id): Path, ) -> Result> { let tpl = MemberService::edit_ui(&state, id).await?; @@ -62,7 +63,7 @@ pub async fn edit_ui( pub async fn edit( - State(state): State, + State(state): State>, Path(id): Path, Form(frm): Form, ) -> Result<(StatusCode, HeaderMap, ())> { @@ -71,7 +72,7 @@ pub async fn edit( } pub async fn del( - State(state): State, + State(state): State>, Path(id): Path, ) -> Result<(StatusCode, HeaderMap, ())> { MemberService::del(&state, id).await?; @@ -79,7 +80,7 @@ pub async fn del( } pub async fn real_del( - State(state): State, + State(state): State>, Path(id): Path, ) -> Result<(StatusCode, HeaderMap, ())> { MemberService::real_del(&state, id).await?; @@ -95,7 +96,7 @@ pub async fn tran_ui() -> Result> { pub async fn tran( - State(state): State, + State(state): State>, Form(frm): Form, ) -> Result<(StatusCode, HeaderMap, ())> { let aff = MemberService::tran(&state, frm).await?; diff --git a/src/main.rs b/src/main.rs index fb406cd..d9ea581 100644 --- a/src/main.rs +++ b/src/main.rs @@ -62,7 +62,6 @@ async fn main() { // 默认TraceLayer的打印级别为DEBUG,设置response的打印级别为INFO,这样可以避免过多的打印日志 // 利用make_span_with来显示span中的其他信息 let trace_layer = TraceLayer::new_for_http() - // TODO span的request写到日志会乱码 不知道怎么解决,with_ansi为什么不起作用 .make_span_with(DefaultMakeSpan::new().level(Level::INFO)) .on_response(DefaultOnResponse::new().level(Level::INFO)); @@ -75,9 +74,9 @@ async fn main() { .route("/real_del/:id", get(handler::real_del)) .route("/tran", get(handler::tran_ui).post(handler::tran)) .layer(trace_layer) - .with_state(AppState { + .with_state(Arc::new(AppState { pool: Arc::new(pool) - }); + })); let listener = tokio::net::TcpListener::bind(&cfg.web.addr).await.unwrap(); diff --git a/src/model/state.rs b/src/model/state.rs index 4f6e965..2dc6317 100644 --- a/src/model/state.rs +++ b/src/model/state.rs @@ -1,7 +1,7 @@ use std::sync::Arc; // 最外层的state必须实现Clone -#[derive(Clone)] +#[derive(Debug, Clone)] pub struct AppState { pub pool: Arc, } \ No newline at end of file