restify_openapi/
simple.rs1use crate::ApiComponent;
2
3macro_rules! simple_modifier {
4 ($($ty:ty),*) => {
5 $(
6 impl ApiComponent for $ty {
7 fn child_schemas() -> Vec<(String, $crate::reference_or::ReferenceOr<$crate::Schema>)> {
8 vec![]
9 }
10 fn raw_schema() -> Option<$crate::reference_or::ReferenceOr<$crate::Schema>> {
11 let gen = schemars::gen::SchemaSettings::openapi3().into_generator();
12
13 let schema: $crate::reference_or::ReferenceOr<$crate::Schema> =
14 $crate::Schema::Object(gen.into_root_schema_for::<$ty>().schema).into();
15 Some(schema)
16 }
17 fn schema() -> Option<(String, $crate::reference_or::ReferenceOr<$crate::Schema>)> {
18 None
19 }
20 }
21 )*
22 };
23}
24
25simple_modifier!(
26 char, String, bool, f32, f64, i8, i16, i32, u8, u16, u32, i64, i128, isize, u64, u128, usize
27);
28
29#[cfg(feature = "chrono")]
30simple_modifier!(chrono::NaiveDate, chrono::NaiveTime, chrono::NaiveDateTime);
31#[cfg(feature = "rust_decimal")]
32simple_modifier!(rust_decimal::Decimal);
33#[cfg(feature = "uuid")]
34simple_modifier!(uuid::Uuid);
35#[cfg(feature = "url")]
36simple_modifier!(url::Url);
37
38#[cfg(feature = "chrono")]
39impl<T: chrono::TimeZone> ApiComponent for chrono::DateTime<T> {
40 fn child_schemas() -> Vec<(String, crate::reference_or::ReferenceOr<crate::Schema>)> {
41 vec![]
42 }
43
44 fn raw_schema() -> Option<crate::reference_or::ReferenceOr<crate::Schema>> {
45 let gen = schemars::gen::SchemaSettings::openapi3().into_generator();
46
47 let schema: crate::reference_or::ReferenceOr<crate::Schema> =
48 crate::Schema::Object(gen.into_root_schema_for::<chrono::DateTime<T>>().schema).into();
49 Some(schema)
50 }
51
52 fn schema() -> Option<(String, crate::reference_or::ReferenceOr<crate::Schema>)> {
53 None
54 }
55}