fix(codegen): fixed codegen for array path parameters
This commit is contained in:
parent
f48f95a4a5
commit
4979e5c590
File diff suppressed because it is too large
Load diff
|
@ -317,23 +317,3 @@ impl Enum {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::openapi::schema::OpenApiSchema;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn codegen() {
|
||||
let schema = OpenApiSchema::read().unwrap();
|
||||
|
||||
let revive_setting = schema.components.schemas.get("ReviveSetting").unwrap();
|
||||
|
||||
let r#enum = Enum::from_schema("ReviveSetting", revive_setting).unwrap();
|
||||
|
||||
let code = r#enum.codegen().unwrap();
|
||||
|
||||
panic!("{code}");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
use r#enum::Enum;
|
||||
use indexmap::IndexMap;
|
||||
use newtype::Newtype;
|
||||
use object::Object;
|
||||
use proc_macro2::TokenStream;
|
||||
use r#enum::Enum;
|
||||
|
||||
use crate::openapi::r#type::OpenApiType;
|
||||
|
||||
|
@ -101,65 +101,6 @@ mod test {
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn resolve_enums() {
|
||||
let schema = OpenApiSchema::read().unwrap();
|
||||
|
||||
let forum_feed_type_schema = schema.components.schemas.get("ForumFeedTypeEnum").unwrap();
|
||||
|
||||
let forum_feed_type = resolve(
|
||||
forum_feed_type_schema,
|
||||
"ForumFeedTypeEnum",
|
||||
&schema.components.schemas,
|
||||
);
|
||||
|
||||
assert_eq!(forum_feed_type, Model::Enum(Enum {
|
||||
name: "ForumFeedType".to_owned(),
|
||||
description: Some("This represents the type of the activity. Values range from 1 to 8 where:\n * 1 = 'X posted on a thread',\n * 2 = 'X created a thread',\n * 3 = 'X liked your thread',\n * 4 = 'X disliked your thread',\n * 5 = 'X liked your post',\n * 6 = 'X disliked your post',\n * 7 = 'X quoted your post'.".to_owned()),
|
||||
repr: Some(EnumRepr::U32),
|
||||
copy: true,
|
||||
untagged: false,
|
||||
display: true,
|
||||
variants: vec![
|
||||
EnumVariant {
|
||||
name: "Variant1".to_owned(),
|
||||
value: r#enum::EnumVariantValue::Repr(1),
|
||||
..Default::default()
|
||||
},
|
||||
EnumVariant {
|
||||
name: "Variant2".to_owned(),
|
||||
value: r#enum::EnumVariantValue::Repr(2),
|
||||
..Default::default()
|
||||
},
|
||||
EnumVariant {
|
||||
name: "Variant3".to_owned(),
|
||||
value: r#enum::EnumVariantValue::Repr(3),
|
||||
..Default::default()
|
||||
},
|
||||
EnumVariant {
|
||||
name: "Variant4".to_owned(),
|
||||
value: r#enum::EnumVariantValue::Repr(4),
|
||||
..Default::default()
|
||||
},
|
||||
EnumVariant {
|
||||
name: "Variant5".to_owned(),
|
||||
value: r#enum::EnumVariantValue::Repr(5),
|
||||
..Default::default()
|
||||
},
|
||||
EnumVariant {
|
||||
name: "Variant6".to_owned(),
|
||||
value: r#enum::EnumVariantValue::Repr(6),
|
||||
..Default::default()
|
||||
},
|
||||
EnumVariant {
|
||||
name: "Variant7".to_owned(),
|
||||
value: r#enum::EnumVariantValue::Repr(7),
|
||||
..Default::default()
|
||||
},
|
||||
]
|
||||
}))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn resolve_all() {
|
||||
let schema = OpenApiSchema::read().unwrap();
|
||||
|
|
|
@ -121,24 +121,3 @@ impl Newtype {
|
|||
Some(body)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::*;
|
||||
use crate::openapi::schema::OpenApiSchema;
|
||||
|
||||
#[test]
|
||||
fn codegen() {
|
||||
let schema = OpenApiSchema::read().unwrap();
|
||||
|
||||
let user_id = schema.components.schemas.get("UserId").unwrap();
|
||||
|
||||
let mut newtype = Newtype::from_schema("UserId", user_id).unwrap();
|
||||
|
||||
newtype.description = Some("Description goes here".to_owned());
|
||||
|
||||
let code = newtype.codegen().unwrap().to_string();
|
||||
|
||||
panic!("{code}");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -207,7 +207,9 @@ impl Property {
|
|||
let prim = match (schema.r#type, schema.format) {
|
||||
(Some("integer"), Some("int32")) => PrimitiveType::I32,
|
||||
(Some("integer"), Some("int64")) => PrimitiveType::I64,
|
||||
(Some("number"), /* Some("float") */ _) => PrimitiveType::Float,
|
||||
(Some("number"), /* Some("float") */ _) | (_, Some("float")) => {
|
||||
PrimitiveType::Float
|
||||
}
|
||||
(Some("string"), None) => PrimitiveType::String,
|
||||
(Some("boolean"), None) => PrimitiveType::Bool,
|
||||
_ => return None,
|
||||
|
|
|
@ -2,7 +2,7 @@ use std::fmt::Write;
|
|||
|
||||
use heck::ToUpperCamelCase;
|
||||
use proc_macro2::TokenStream;
|
||||
use quote::{ToTokens, format_ident, quote};
|
||||
use quote::{format_ident, quote, ToTokens};
|
||||
|
||||
use crate::openapi::parameter::{
|
||||
OpenApiParameter, OpenApiParameterDefault, OpenApiParameterSchema,
|
||||
|
@ -303,7 +303,12 @@ The default value [Self::{}](self::{}#variant.{})"#,
|
|||
let mut code = inner.codegen().unwrap_or_default();
|
||||
|
||||
let name = format_ident!("{}", outer_name);
|
||||
let inner_ty = items.codegen_type_name(&inner_name);
|
||||
let inner_ty = if matches!(items.as_ref(), ParameterType::Schema { type_name: _ }) {
|
||||
let inner_name = format_ident!("{}", inner_name);
|
||||
quote! { crate::models::#inner_name }
|
||||
} else {
|
||||
items.codegen_type_name(&inner_name).to_token_stream()
|
||||
};
|
||||
|
||||
code.extend(quote! {
|
||||
#[derive(Debug, Clone)]
|
||||
|
|
|
@ -352,7 +352,13 @@ impl Path {
|
|||
crate::models::#ty_name
|
||||
}
|
||||
}
|
||||
ParameterType::Array { .. } => param.r#type.codegen_type_name(¶m.name),
|
||||
ParameterType::Array { .. } => {
|
||||
let ty_name = param.r#type.codegen_type_name(¶m.name);
|
||||
|
||||
quote! {
|
||||
crate::request::models::#request_mod_name::#ty_name
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let arg_name = format_ident!("{}", param.value.to_snake_case());
|
||||
|
@ -462,7 +468,12 @@ impl Path {
|
|||
crate::models::#ty_name
|
||||
}
|
||||
}
|
||||
ParameterType::Array { .. } => param.r#type.codegen_type_name(¶m.name),
|
||||
ParameterType::Array { .. } => {
|
||||
let name = param.r#type.codegen_type_name(¶m.name);
|
||||
quote! {
|
||||
crate::request::models::#request_mod_name::#name
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let arg_name = format_ident!("{}", param.value.to_snake_case());
|
||||
|
|
|
@ -415,7 +415,7 @@ pub(super) mod test {
|
|||
let forum_scope = ForumScope(&client);
|
||||
|
||||
forum_scope
|
||||
.threads_for_category_ids("2".to_owned(), |b| b)
|
||||
.threads_for_category_ids([2.into()].into(), |b| b)
|
||||
.await
|
||||
.unwrap();
|
||||
}
|
||||
|
@ -640,7 +640,7 @@ pub(super) mod test {
|
|||
let torn_scope = TornScope(&client);
|
||||
|
||||
torn_scope
|
||||
.items_for_ids("1".to_owned(), |b| b)
|
||||
.items_for_ids([1.into()].into(), |b| b)
|
||||
.await
|
||||
.unwrap();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue