Implement GraphQL enum to Value conversion. #617

This commit is contained in:
Sunli 2021-09-17 09:02:09 +08:00
parent d3e14ae613
commit d724507458
2 changed files with 16 additions and 1 deletions

View File

@ -167,6 +167,12 @@ pub fn generate(enum_args: &args::Enum) -> GeneratorResult<TokenStream> {
} }
} }
impl From<#ident> for #crate_name::Value {
fn from(value: #ident) -> #crate_name::Value {
#crate_name::resolver_utils::enum_value(value)
}
}
#remote_conversion #remote_conversion
}; };
Ok(expanded.into()) Ok(expanded.into())

View File

@ -2,6 +2,13 @@ use async_graphql::*;
#[tokio::test] #[tokio::test]
pub async fn test_error_extensions() { pub async fn test_error_extensions() {
#[derive(Enum, Eq, PartialEq, Copy, Clone)]
enum MyEnum {
Create,
Delete,
Update,
}
struct Query; struct Query;
#[Object] #[Object]
@ -10,6 +17,7 @@ pub async fn test_error_extensions() {
Err("my error".extend_with(|err, e| { Err("my error".extend_with(|err, e| {
e.set("msg", err.to_string()); e.set("msg", err.to_string());
e.set("code", 100); e.set("code", 100);
e.set("action", MyEnum::Create)
})) }))
} }
@ -40,7 +48,8 @@ pub async fn test_error_extensions() {
"path": ["extendErr"], "path": ["extendErr"],
"extensions": { "extensions": {
"msg": "my error", "msg": "my error",
"code": 100 "code": 100,
"action": "CREATE",
} }
}] }]
}) })