use gotcha::{api, Extension, Json, Schematic};
use serde::{Deserialize, Serialize};
#[derive(Clone)]
struct AuthContext {
user_id: String,
}
#[derive(Serialize, Deserialize, Schematic)]
struct Request {
message: String,
}
#[derive(Serialize, Deserialize, Schematic)]
struct Response {
message: String,
}
#[api(id = "test_extension", group = "test")]
async fn handler_with_extension(
Extension(_auth): Extension<AuthContext>,
Json(body): Json<Request>,
) -> Json<Response> {
Json(Response {
message: body.message,
})
}
#[api(id = "test_multiple_extensions", group = "test")]
async fn handler_with_multiple_extensions(
Extension(_auth): Extension<AuthContext>,
Extension(_config): Extension<String>,
Json(body): Json<Request>,
) -> Json<Response> {
Json(Response {
message: body.message,
})
}
fn main() {
println!("Extension parameters compile successfully with #[api] macro");
}