diff --git a/derive/src/enum.rs b/derive/src/enum.rs index d3bfc185..40432691 100644 --- a/derive/src/enum.rs +++ b/derive/src/enum.rs @@ -167,6 +167,12 @@ pub fn generate(enum_args: &args::Enum) -> GeneratorResult { } } + impl From<#ident> for #crate_name::Value { + fn from(value: #ident) -> #crate_name::Value { + #crate_name::resolver_utils::enum_value(value) + } + } + #remote_conversion }; Ok(expanded.into()) diff --git a/tests/error_ext.rs b/tests/error_ext.rs index b26c4fc6..6214b08d 100644 --- a/tests/error_ext.rs +++ b/tests/error_ext.rs @@ -2,6 +2,13 @@ use async_graphql::*; #[tokio::test] pub async fn test_error_extensions() { + #[derive(Enum, Eq, PartialEq, Copy, Clone)] + enum MyEnum { + Create, + Delete, + Update, + } + struct Query; #[Object] @@ -10,6 +17,7 @@ pub async fn test_error_extensions() { Err("my error".extend_with(|err, e| { e.set("msg", err.to_string()); e.set("code", 100); + e.set("action", MyEnum::Create) })) } @@ -40,7 +48,8 @@ pub async fn test_error_extensions() { "path": ["extendErr"], "extensions": { "msg": "my error", - "code": 100 + "code": 100, + "action": "CREATE", } }] })