/
com_get.go
115 lines (104 loc) · 4.33 KB
/
com_get.go
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package expansion
import (
"github.com/metamatex/metamate/asg/pkg/v0/asg/endpointnames"
"github.com/metamatex/metamate/asg/pkg/v0/asg/fieldnames"
"github.com/metamatex/metamate/asg/pkg/v0/asg/graph"
"github.com/metamatex/metamate/asg/pkg/v0/asg/graph/endpointflags"
"github.com/metamatex/metamate/asg/pkg/v0/asg/graph/fieldflags"
"github.com/metamatex/metamate/asg/pkg/v0/asg/graph/typeflags"
"github.com/metamatex/metamate/asg/pkg/v0/asg/typenames"
)
func generateGetRequest(root *graph.RootNode, tn *graph.TypeNode) {
request := root.AddTypeNode(typenames.GetRequest(tn.Name()), graph.FieldNodeSlice{
graph.TypeField(fieldnames.Mode, typenames.GetMode, graph.Flags{
fieldflags.ValidateIsSet: true,
}),
graph.TypeField(fieldnames.ServiceFilter, typenames.Filter(typenames.Service), graph.Flags{
fieldflags.Filter: false,
fieldflags.ValidateIsSet: false,
}),
graph.TypeField(fieldnames.Filter, typenames.Filter(tn.Name()), graph.Flags{
fieldflags.Filter: false,
fieldflags.ValidateIsSet: false,
}),
graph.TypeField(fieldnames.Sort, typenames.Sort(tn.Name()), graph.Flags{
fieldflags.Filter: false,
fieldflags.ValidateIsSet: false,
}),
graph.TypeField(fieldnames.Select, typenames.Select(typenames.GetResponse(tn.Name())), graph.Flags{
fieldflags.Filter: false,
fieldflags.ValidateIsSet: true,
}),
graph.ListField(graph.TypeField(fieldnames.Pages, typenames.ServicePage)),
graph.TypeField(fieldnames.Meta, typenames.RequestMeta),
}, graph.Flags{
typeflags.IsRequest: true,
typeflags.IsGetRequest: true,
})
request.Edges.Type.Resolver.
SetFor(tn.Id()).
SetResponse(graph.ToNodeId(typenames.GetResponse(tn.Name())))
tn.Edges.Type.Resolver.
SetGetRequest(request.Id())
}
func generateGetResponse(root *graph.RootNode, tn *graph.TypeNode) {
response := root.AddTypeNode(typenames.GetResponse(tn.Name()), graph.FieldNodeSlice{
graph.ListField(graph.TypeField(fieldnames.Errors, typenames.Error)),
graph.ListField(graph.TypeField(fieldnames.Warnings, typenames.Warning)),
graph.TypeField(fieldnames.Pagination, typenames.Pagination),
graph.Int32Field(fieldnames.Count),
graph.ListField(graph.TypeField(tn.PluralFieldName(), tn.Name())),
}, graph.Flags{
typeflags.IsResponse: true,
})
response.Edges.Type.Resolver.
SetFor(tn.Id()).
SetRequest(graph.ToNodeId(typenames.GetRequest(tn.Name())))
tn.Edges.Type.Resolver.
SetGetResponse(response.Id())
}
func generateGetEndpoint(root *graph.RootNode, tn *graph.TypeNode) {
en := root.AddEndpointNode(endpointnames.Get(tn.Name()), graph.MethodGet, tn.Name(), typenames.GetRequest(tn.Name()), typenames.GetResponse(tn.Name()), graph.Flags{
endpointflags.IsGetEndpoint: true,
})
tn.Edges.Endpoint.Resolver.SetGet(en.Id())
}
func generateGetCollectionNode(root *graph.RootNode, tn *graph.TypeNode) {
getCollection := root.AddTypeNode(typenames.GetCollection(tn.Name()), graph.FieldNodeSlice{
graph.TypeField(fieldnames.ServiceFilter, typenames.Filter(typenames.Service)),
graph.TypeField(fieldnames.Filter, typenames.Filter(tn.Name()), graph.Flags{
fieldflags.Filter: false,
fieldflags.ValidateIsSet: false,
}),
graph.TypeField(fieldnames.Sort, typenames.Sort(tn.Name()), graph.Flags{
fieldflags.Filter: false,
fieldflags.ValidateIsSet: false,
}),
graph.TypeField(fieldnames.Select, typenames.Select(typenames.Collection(tn.Name())), graph.Flags{
fieldflags.Filter: false,
fieldflags.ValidateIsSet: false,
}),
graph.ListField(graph.TypeField(fieldnames.Pages, typenames.ServicePage)),
}, graph.Flags{
typeflags.IsGetCollection: true,
})
getCollection.Edges.Type.Resolver.
SetFor(tn.Id())
tn.Edges.Type.Resolver.
SetGetCollection(getCollection.Id())
}
func generateCollection(root *graph.RootNode, tn *graph.TypeNode) {
collection := root.AddTypeNode(typenames.Collection(tn.Name()), graph.FieldNodeSlice{
graph.ListField(graph.TypeField(fieldnames.Errors, typenames.Error)),
graph.ListField(graph.TypeField(fieldnames.Warnings, typenames.Warning)),
graph.TypeField(fieldnames.Pagination, typenames.Pagination),
graph.Int32Field(fieldnames.Count),
graph.ListField(graph.TypeField(tn.PluralFieldName(), tn.Name())),
}, graph.Flags{
typeflags.IsCollection: true,
})
collection.Edges.Type.Resolver.
SetFor(tn.Id())
tn.Edges.Type.Resolver.
SetCollection(collection.Id())
}