Improve parameter types (#7)

This commit is contained in:
Adam Leventhal 2021-10-07 23:19:51 -07:00 committed by GitHub
parent 57ac1d606f
commit 273120683b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 30 additions and 30 deletions

View File

@ -12,7 +12,7 @@ use std::io::Write;
use std::path::{Path, PathBuf};
use quote::{format_ident, quote};
use typify::TypeSpace;
use typify::{TypeEntryIdentifier, TypeSpace};
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 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 {
parameter_data,
@ -536,7 +536,8 @@ fn generate(api: &OpenAPI, ts: &mut TypeSpace) -> Result<String> {
let nam = parameter_data.name.clone();
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 {
typ = quote! { Option<#typ> };
}
@ -544,7 +545,7 @@ fn generate(api: &OpenAPI, ts: &mut TypeSpace) -> Result<String> {
nam.to_string(),
!parameter_data.required,
));
Ok((ParamType::Query, nam, quote! { &#typ }))
Ok((ParamType::Query, nam, typ))
}
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 (body_param, body_func) = if let Some(b) =
&operation.request_body
{
let (body_param, body_func) =
if let Some(b) = &operation.request_body {
let b = b.item()?;
if b.is_binary()? {
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 {
let schema = s.to_schema();
let typ = ts.add_type(&schema)?;
(Some(quote! { &#typ }), Some(quote! { .json(body) }))
let typ = ts.add_type_details(&schema)?.parameter;
(Some(typ), Some(quote! { .json(body) }))
} else {
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 {
let schema = schema.to_schema();
ts.add_type(&schema)?
ts.add_type_details(&schema)?.ident
} else {
bail!("media type encoding, no schema: {:#?}", mt);
}