use crate::*;
use indexmap::IndexMap;
use serde::{Deserialize, Serialize};
use crate::map::RefOrMap;
#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct Components {
#[serde(default, skip_serializing_if = "IndexMap::is_empty")]
pub security_schemes: RefOrMap<SecurityScheme>,
#[serde(default, skip_serializing_if = "IndexMap::is_empty")]
pub responses: RefOrMap<Response>,
#[serde(default, skip_serializing_if = "IndexMap::is_empty")]
pub parameters: RefOrMap<Parameter>,
#[serde(default, skip_serializing_if = "IndexMap::is_empty")]
pub examples: RefOrMap<Example>,
#[serde(default, skip_serializing_if = "IndexMap::is_empty")]
pub request_bodies: RefOrMap<RequestBody>,
#[serde(default, skip_serializing_if = "IndexMap::is_empty")]
pub headers: RefOrMap<Header>,
#[serde(default, skip_serializing_if = "IndexMap::is_empty")]
pub schemas: RefOrMap<Schema>,
#[serde(default, skip_serializing_if = "IndexMap::is_empty")]
pub links: RefOrMap<Link>,
#[serde(default, skip_serializing_if = "IndexMap::is_empty")]
pub callbacks: RefOrMap<Callback>,
#[serde(flatten, deserialize_with = "crate::util::deserialize_extensions")]
pub extensions: IndexMap<String, serde_json::Value>,
}
impl Components {
pub fn is_empty(&self) -> bool {
self.security_schemes.is_empty()
&& self.responses.is_empty()
&& self.parameters.is_empty()
&& self.examples.is_empty()
&& self.request_bodies.is_empty()
&& self.headers.is_empty()
&& self.schemas.is_empty()
&& self.links.is_empty()
&& self.callbacks.is_empty()
&& self.extensions.is_empty()
}
}