From 256d287ba68a83a04ec24f6171a72a64a77f9093 Mon Sep 17 00:00:00 2001 From: Tolmachev Igor Date: Fri, 26 Sep 2025 20:46:02 +0300 Subject: Add Query extractor --- src/extract/mod.rs | 2 ++ src/extract/query.rs | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 src/extract/query.rs (limited to 'src/extract') diff --git a/src/extract/mod.rs b/src/extract/mod.rs index b46a610..e16b9d4 100644 --- a/src/extract/mod.rs +++ b/src/extract/mod.rs @@ -1,5 +1,7 @@ mod auth; mod json; +mod query; pub use auth::Auth; pub use json::ApiJson; +pub use query::ApiQuery; diff --git a/src/extract/query.rs b/src/extract/query.rs new file mode 100644 index 0000000..53c8993 --- /dev/null +++ b/src/extract/query.rs @@ -0,0 +1,21 @@ +use axum::{ + extract::{FromRequestParts, Query, rejection::QueryRejection}, + http::request::Parts, +}; + +use crate::ErrorResponse; + +pub struct ApiQuery(pub T); + +impl FromRequestParts for ApiQuery +where + Query: FromRequestParts, + S: Send + Sync, +{ + type Rejection = ErrorResponse; + + #[inline] + async fn from_request_parts(parts: &mut Parts, state: &S) -> Result { + Ok(Self(Query::from_request_parts(parts, state).await?.0)) + } +} -- cgit v1.2.3