dynamic-graphql-derive 0.10.2

Dynamic GraphQL schema macro
Documentation
---
source: derive/src/args/test_output.rs
expression: output
---
```rust
enum Animal {
    Dog(Dog),
    Cat(Cat),
}

impl dynamic_graphql::internal::TypeName for Animal {
    fn get_type_name() -> std::borrow::Cow<'static, str> {
        "Animal".into()
    }
}
impl dynamic_graphql::internal::OutputTypeName for Animal {}
impl dynamic_graphql::internal::Union for Animal {}
impl<
    '__dynamic_graphql_lifetime,
> dynamic_graphql::internal::ResolveOwned<'__dynamic_graphql_lifetime> for Animal {
    fn resolve_owned(
        self,
        ctx: &dynamic_graphql::Context,
    ) -> dynamic_graphql::Result<
        Option<dynamic_graphql::FieldValue<'__dynamic_graphql_lifetime>>,
    > {
        match self {
            Animal::Dog(value) => {
                dynamic_graphql::internal::Resolve::resolve(value, ctx)
                    .map(|value| {
                        value
                            .map(|value| {
                                value
                                    .with_type(
                                        <Dog as dynamic_graphql::internal::Object>::get_object_type_name(),
                                    )
                            })
                    })
            }
            Animal::Cat(value) => {
                dynamic_graphql::internal::Resolve::resolve(value, ctx)
                    .map(|value| {
                        value
                            .map(|value| {
                                value
                                    .with_type(
                                        <Cat as dynamic_graphql::internal::Object>::get_object_type_name(),
                                    )
                            })
                    })
            }
        }
    }
}
impl<
    '__dynamic_graphql_lifetime,
> dynamic_graphql::internal::ResolveRef<'__dynamic_graphql_lifetime> for Animal {
    fn resolve_ref(
        &'__dynamic_graphql_lifetime self,
        ctx: &dynamic_graphql::Context,
    ) -> dynamic_graphql::Result<
        Option<dynamic_graphql::FieldValue<'__dynamic_graphql_lifetime>>,
    > {
        match self {
            Animal::Dog(value) => {
                dynamic_graphql::internal::Resolve::resolve(value, ctx)
                    .map(|value| {
                        value
                            .map(|value| {
                                value
                                    .with_type(
                                        <Dog as dynamic_graphql::internal::Object>::get_object_type_name(),
                                    )
                            })
                    })
            }
            Animal::Cat(value) => {
                dynamic_graphql::internal::Resolve::resolve(value, ctx)
                    .map(|value| {
                        value
                            .map(|value| {
                                value
                                    .with_type(
                                        <Cat as dynamic_graphql::internal::Object>::get_object_type_name(),
                                    )
                            })
                    })
            }
        }
    }
}
impl dynamic_graphql::internal::Register for Animal {
    fn register(
        registry: dynamic_graphql::internal::Registry,
    ) -> dynamic_graphql::internal::Registry {
        let registry = registry.register::<Dog>();
        let registry = registry.register::<Cat>();
        let object = dynamic_graphql::dynamic::Union::new(
            <Self as dynamic_graphql::internal::Union>::get_union_type_name().as_ref(),
        );
        let object = object
            .possible_type(
                <Dog as dynamic_graphql::internal::Object>::get_object_type_name()
                    .as_ref(),
            );
        let object = object
            .possible_type(
                <Cat as dynamic_graphql::internal::Object>::get_object_type_name()
                    .as_ref(),
            );
        registry.register_type(object)
    }
}

```