diff --git a/crates/extra/src/concurrency_limiter.rs b/crates/extra/src/concurrency_limiter.rs index 8a2078adf..a663ae3d5 100644 --- a/crates/extra/src/concurrency_limiter.rs +++ b/crates/extra/src/concurrency_limiter.rs @@ -1,9 +1,9 @@ -//! size limiter middleware +//! concurrency limiter middleware use tokio::sync::Semaphore; use salvo_core::http::StatusError; -use salvo_core::http::{Body, Request, Response}; +use salvo_core::http::{Request, Response}; use salvo_core::{async_trait, Depot, FlowCtrl, Handler}; /// MaxConcurrency diff --git a/crates/oapi/src/lib.rs b/crates/oapi/src/lib.rs index 1de903a18..b1cd2d5b0 100644 --- a/crates/oapi/src/lib.rs +++ b/crates/oapi/src/lib.rs @@ -230,7 +230,7 @@ impl ToSchema for StatusError { .property("name", String::to_schema(components)) .required("brief") .property("brief", String::to_schema(components)) - .required("brief") + .required("detail") .property("detail", String::to_schema(components)) .property("cause", String::to_schema(components)), ); diff --git a/crates/oapi/src/openapi/schema/object.rs b/crates/oapi/src/openapi/schema/object.rs index dcb55604d..558ca4089 100644 --- a/crates/oapi/src/openapi/schema/object.rs +++ b/crates/oapi/src/openapi/schema/object.rs @@ -1,5 +1,6 @@ use std::collections::BTreeMap; +use indexmap::IndexSet; use serde::{Deserialize, Serialize}; use serde_json::Value; @@ -50,8 +51,8 @@ pub struct Object { pub enum_values: Option>, /// Vector of required field names. - #[serde(skip_serializing_if = "Vec::is_empty", default = "Vec::new")] - pub required: Vec, + #[serde(skip_serializing_if = "IndexSet::is_empty", default = "IndexSet::new")] + pub required: IndexSet, /// Map of fields with their [`Schema`] types. /// @@ -194,7 +195,7 @@ impl Object { /// Add field to the required fields of [`Object`]. pub fn required(mut self, required_field: impl Into) -> Self { - self.required.push(required_field.into()); + self.required.insert(required_field.into()); self }