1 package entityresolver
2
3
4
5
6
7 import (
8 "context"
9 "fmt"
10
11 "github.com/99designs/gqlgen/plugin/federation/testdata/entityresolver/generated"
12 "github.com/99designs/gqlgen/plugin/federation/testdata/entityresolver/generated/model"
13 )
14
15
16 func (r *entityResolver) FindHelloByName(ctx context.Context, name string) (*model.Hello, error) {
17 return &model.Hello{
18 Name: name,
19 }, nil
20 }
21
22
23 func (r *entityResolver) FindHelloMultiSingleKeysByKey1AndKey2(ctx context.Context, key1 string, key2 string) (*model.HelloMultiSingleKeys, error) {
24 panic(fmt.Errorf("not implemented"))
25 }
26
27
28 func (r *entityResolver) FindHelloWithErrorsByName(ctx context.Context, name string) (*model.HelloWithErrors, error) {
29 if name == "inject error" {
30 return nil, generated.ErrResolvingHelloWithErrorsByName
31 } else if name == "" {
32 return nil, generated.ErrEmptyKeyResolvingHelloWithErrorsByName
33 }
34
35 return &model.HelloWithErrors{
36 Name: name,
37 }, nil
38 }
39
40
41 func (r *entityResolver) FindManyMultiHelloByNames(ctx context.Context, reps []*model.MultiHelloByNamesInput) ([]*model.MultiHello, error) {
42 results := []*model.MultiHello{}
43
44 for _, item := range reps {
45 results = append(results, &model.MultiHello{
46 Name: item.Name + " - from multiget",
47 })
48 }
49
50 return results, nil
51 }
52
53
54 func (r *entityResolver) FindManyMultiHelloMultipleRequiresByNames(ctx context.Context, reps []*model.MultiHelloMultipleRequiresByNamesInput) ([]*model.MultiHelloMultipleRequires, error) {
55 results := make([]*model.MultiHelloMultipleRequires, len(reps))
56
57 for i := range reps {
58 results[i] = &model.MultiHelloMultipleRequires{
59 Name: reps[i].Name,
60 }
61 }
62
63 return results, nil
64 }
65
66
67 func (r *entityResolver) FindManyMultiHelloRequiresByNames(ctx context.Context, reps []*model.MultiHelloRequiresByNamesInput) ([]*model.MultiHelloRequires, error) {
68 results := make([]*model.MultiHelloRequires, len(reps))
69
70 for i := range reps {
71 results[i] = &model.MultiHelloRequires{
72 Name: reps[i].Name,
73 }
74 }
75
76 return results, nil
77 }
78
79
80 func (r *entityResolver) FindManyMultiHelloWithErrorByNames(ctx context.Context, reps []*model.MultiHelloWithErrorByNamesInput) ([]*model.MultiHelloWithError, error) {
81 return nil, fmt.Errorf("error resolving MultiHelloWorldWithError")
82 }
83
84
85 func (r *entityResolver) FindManyMultiPlanetRequiresNestedByNames(ctx context.Context, reps []*model.MultiPlanetRequiresNestedByNamesInput) ([]*model.MultiPlanetRequiresNested, error) {
86 worlds := map[string]*model.World{
87 "earth": {
88 Foo: "A",
89 },
90 "mars": {
91 Foo: "B",
92 },
93 }
94
95 results := make([]*model.MultiPlanetRequiresNested, len(reps))
96
97 for i := range reps {
98 name := reps[i].Name
99 world, ok := worlds[name]
100 if !ok {
101 return nil, fmt.Errorf("unknown planet: %s", name)
102 }
103
104 results[i] = &model.MultiPlanetRequiresNested{
105 Name: name,
106 World: world,
107 }
108 }
109
110 return results, nil
111 }
112
113
114 func (r *entityResolver) FindPlanetMultipleRequiresByName(ctx context.Context, name string) (*model.PlanetMultipleRequires, error) {
115 return &model.PlanetMultipleRequires{Name: name}, nil
116 }
117
118
119 func (r *entityResolver) FindPlanetRequiresByName(ctx context.Context, name string) (*model.PlanetRequires, error) {
120 return &model.PlanetRequires{
121 Name: name,
122 }, nil
123 }
124
125
126 func (r *entityResolver) FindPlanetRequiresNestedByName(ctx context.Context, name string) (*model.PlanetRequiresNested, error) {
127 worlds := map[string]*model.World{
128 "earth": {
129 Foo: "A",
130 },
131 "mars": {
132 Foo: "B",
133 },
134 }
135 world, ok := worlds[name]
136 if !ok {
137 return nil, fmt.Errorf("unknown planet: %s", name)
138 }
139
140 return &model.PlanetRequiresNested{
141 Name: name,
142 World: world,
143 }, nil
144 }
145
146
147 func (r *entityResolver) FindWorldByHelloNameAndFoo(ctx context.Context, helloName string, foo string) (*model.World, error) {
148 return &model.World{
149 Hello: &model.Hello{
150 Name: helloName,
151 },
152 Foo: foo,
153 }, nil
154 }
155
156
157 func (r *entityResolver) FindWorldNameByName(ctx context.Context, name string) (*model.WorldName, error) {
158 return &model.WorldName{
159 Name: name,
160 }, nil
161 }
162
163
164 func (r *entityResolver) FindWorldWithMultipleKeysByHelloNameAndFoo(ctx context.Context, helloName string, foo string) (*model.WorldWithMultipleKeys, error) {
165 return &model.WorldWithMultipleKeys{
166 Hello: &model.Hello{
167 Name: helloName,
168 },
169 Foo: foo,
170 }, nil
171 }
172
173
174 func (r *entityResolver) FindWorldWithMultipleKeysByBar(ctx context.Context, bar int) (*model.WorldWithMultipleKeys, error) {
175 return &model.WorldWithMultipleKeys{
176 Bar: bar,
177 }, nil
178 }
179
180
181 func (r *Resolver) Entity() generated.EntityResolver { return &entityResolver{r} }
182
183 type entityResolver struct{ *Resolver }
184
View as plain text