dynamic_graphql/
type_ref_builder.rs1use 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}