Improve parameter types (#7)
This commit is contained in:
parent
57ac1d606f
commit
273120683b
22
src/main.rs
22
src/main.rs
|
@ -12,7 +12,7 @@ use std::io::Write;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
|
||||||
use quote::{format_ident, quote};
|
use quote::{format_ident, quote};
|
||||||
use typify::TypeSpace;
|
use typify::{TypeEntryIdentifier, TypeSpace};
|
||||||
|
|
||||||
use crate::to_schema::ToSchema;
|
use crate::to_schema::ToSchema;
|
||||||
|
|
||||||
|
@ -518,9 +518,9 @@ fn generate(api: &OpenAPI, ts: &mut TypeSpace) -> Result<String> {
|
||||||
|
|
||||||
let nam = parameter_data.name.clone();
|
let nam = parameter_data.name.clone();
|
||||||
let schema = parameter_data.schema()?.to_schema();
|
let schema = parameter_data.schema()?.to_schema();
|
||||||
let typ = ts.add_type(&schema)?;
|
let typ = ts.add_type_details(&schema)?.parameter;
|
||||||
|
|
||||||
Ok((ParamType::Path, nam, quote! { &#typ }))
|
Ok((ParamType::Path, nam, typ))
|
||||||
}
|
}
|
||||||
openapiv3::Parameter::Query {
|
openapiv3::Parameter::Query {
|
||||||
parameter_data,
|
parameter_data,
|
||||||
|
@ -536,7 +536,8 @@ fn generate(api: &OpenAPI, ts: &mut TypeSpace) -> Result<String> {
|
||||||
|
|
||||||
let nam = parameter_data.name.clone();
|
let nam = parameter_data.name.clone();
|
||||||
let schema = parameter_data.schema()?.to_schema();
|
let schema = parameter_data.schema()?.to_schema();
|
||||||
let mut typ = ts.add_type(&schema)?;
|
let mut typ =
|
||||||
|
ts.add_type_details(&schema)?.parameter;
|
||||||
if !parameter_data.required {
|
if !parameter_data.required {
|
||||||
typ = quote! { Option<#typ> };
|
typ = quote! { Option<#typ> };
|
||||||
}
|
}
|
||||||
|
@ -544,7 +545,7 @@ fn generate(api: &OpenAPI, ts: &mut TypeSpace) -> Result<String> {
|
||||||
nam.to_string(),
|
nam.to_string(),
|
||||||
!parameter_data.required,
|
!parameter_data.required,
|
||||||
));
|
));
|
||||||
Ok((ParamType::Query, nam, quote! { &#typ }))
|
Ok((ParamType::Query, nam, typ))
|
||||||
}
|
}
|
||||||
x => bail!("unhandled parameter type: {:#?}", x),
|
x => bail!("unhandled parameter type: {:#?}", x),
|
||||||
}
|
}
|
||||||
|
@ -553,9 +554,8 @@ fn generate(api: &OpenAPI, ts: &mut TypeSpace) -> Result<String> {
|
||||||
|
|
||||||
let mut bounds = Vec::new();
|
let mut bounds = Vec::new();
|
||||||
|
|
||||||
let (body_param, body_func) = if let Some(b) =
|
let (body_param, body_func) =
|
||||||
&operation.request_body
|
if let Some(b) = &operation.request_body {
|
||||||
{
|
|
||||||
let b = b.item()?;
|
let b = b.item()?;
|
||||||
if b.is_binary()? {
|
if b.is_binary()? {
|
||||||
bounds.push(quote! {B: Into<reqwest::Body>});
|
bounds.push(quote! {B: Into<reqwest::Body>});
|
||||||
|
@ -570,8 +570,8 @@ fn generate(api: &OpenAPI, ts: &mut TypeSpace) -> Result<String> {
|
||||||
|
|
||||||
if let Some(s) = &mt.schema {
|
if let Some(s) = &mt.schema {
|
||||||
let schema = s.to_schema();
|
let schema = s.to_schema();
|
||||||
let typ = ts.add_type(&schema)?;
|
let typ = ts.add_type_details(&schema)?.parameter;
|
||||||
(Some(quote! { &#typ }), Some(quote! { .json(body) }))
|
(Some(typ), Some(quote! { .json(body) }))
|
||||||
} else {
|
} else {
|
||||||
bail!("media type encoding, no schema: {:#?}", mt);
|
bail!("media type encoding, no schema: {:#?}", mt);
|
||||||
}
|
}
|
||||||
|
@ -648,7 +648,7 @@ fn generate(api: &OpenAPI, ts: &mut TypeSpace) -> Result<String> {
|
||||||
|
|
||||||
if let Some(schema) = &mt.schema {
|
if let Some(schema) = &mt.schema {
|
||||||
let schema = schema.to_schema();
|
let schema = schema.to_schema();
|
||||||
ts.add_type(&schema)?
|
ts.add_type_details(&schema)?.ident
|
||||||
} else {
|
} else {
|
||||||
bail!("media type encoding, no schema: {:#?}", mt);
|
bail!("media type encoding, no schema: {:#?}", mt);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue