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