dynamic_graphql/
type_ref_builder.rs

1use async_graphql::dynamic;
2
3pub enum TypeRefBuilder {
4    Named(String),
5    NamedNN(String),
6    List(String),
7    ListNN(String),
8    NNList(String),
9    NNListNN(String),
10}
11
12impl TypeRefBuilder {
13    pub fn optional(self) -> Self {
14        match self {
15            TypeRefBuilder::Named(name) => TypeRefBuilder::Named(name),
16            TypeRefBuilder::NamedNN(name) => TypeRefBuilder::Named(name),
17            TypeRefBuilder::List(name) => TypeRefBuilder::List(name),
18            TypeRefBuilder::ListNN(name) => TypeRefBuilder::List(name),
19            TypeRefBuilder::NNList(name) => TypeRefBuilder::NNList(name),
20            TypeRefBuilder::NNListNN(name) => TypeRefBuilder::NNList(name),
21        }
22    }
23
24    pub fn list(self) -> Self {
25        match self {
26            TypeRefBuilder::Named(name) => TypeRefBuilder::ListNN(name),
27            TypeRefBuilder::NamedNN(name) => TypeRefBuilder::NNListNN(name),
28            TypeRefBuilder::List(name) => TypeRefBuilder::List(name),
29            TypeRefBuilder::ListNN(name) => TypeRefBuilder::ListNN(name),
30            TypeRefBuilder::NNList(name) => TypeRefBuilder::NNList(name),
31            TypeRefBuilder::NNListNN(name) => TypeRefBuilder::NNListNN(name),
32        }
33    }
34}
35
36impl From<TypeRefBuilder> for dynamic::TypeRef {
37    fn from(value: TypeRefBuilder) -> Self {
38        match value {
39            TypeRefBuilder::Named(name) => dynamic::TypeRef::named(name),
40            TypeRefBuilder::NamedNN(name) => dynamic::TypeRef::named_nn(name),
41            TypeRefBuilder::List(name) => dynamic::TypeRef::named_list(name),
42            TypeRefBuilder::ListNN(name) => dynamic::TypeRef::named_list_nn(name),
43            TypeRefBuilder::NNList(name) => dynamic::TypeRef::named_nn_list(name),
44            TypeRefBuilder::NNListNN(name) => dynamic::TypeRef::named_nn_list_nn(name),
45        }
46    }
47}