...
1
2
3 package out_struct_pointers
4
5 import (
6 "fmt"
7 "io"
8 "strconv"
9
10 "github.com/99designs/gqlgen/graphql"
11 )
12
13 type A interface {
14 IsA()
15 }
16
17 type ArrayOfA interface {
18 IsArrayOfA()
19 }
20
21 type B interface {
22 IsB()
23 }
24
25 type C interface {
26 IsA()
27 IsC()
28 }
29
30 type D interface {
31 IsA()
32 IsB()
33 IsD()
34 }
35
36 type FooBarer interface {
37 IsFooBarer()
38 }
39
40
41 type InterfaceWithDescription interface {
42 IsInterfaceWithDescription()
43 }
44
45 type MissingInterface interface {
46 IsMissingInterface()
47 }
48
49 type MissingUnion interface {
50 IsMissingUnion()
51 }
52
53
54 type UnionWithDescription interface {
55 IsUnionWithDescription()
56 }
57
58 type X interface {
59 IsX()
60 }
61
62 type CDImplemented struct {
63 A string `json:"a" database:"CDImplementeda"`
64 B int `json:"b" database:"CDImplementedb"`
65 C bool `json:"c" database:"CDImplementedc"`
66 D *string `json:"d,omitempty" database:"CDImplementedd"`
67 }
68
69 func (CDImplemented) IsC() {}
70
71 func (CDImplemented) IsA() {}
72
73 func (CDImplemented) IsD() {}
74
75 func (CDImplemented) IsB() {}
76
77 type CyclicalA struct {
78 FieldOne *CyclicalB `json:"field_one,omitempty" database:"CyclicalAfield_one"`
79 FieldTwo *CyclicalB `json:"field_two,omitempty" database:"CyclicalAfield_two"`
80 FieldThree *CyclicalB `json:"field_three,omitempty" database:"CyclicalAfield_three"`
81 FieldFour string `json:"field_four" database:"CyclicalAfield_four"`
82 }
83
84 type CyclicalB struct {
85 FieldOne *CyclicalA `json:"field_one,omitempty" database:"CyclicalBfield_one"`
86 FieldTwo *CyclicalA `json:"field_two,omitempty" database:"CyclicalBfield_two"`
87 FieldThree *CyclicalA `json:"field_three,omitempty" database:"CyclicalBfield_three"`
88 FieldFour *CyclicalA `json:"field_four,omitempty" database:"CyclicalBfield_four"`
89 FieldFive string `json:"field_five" database:"CyclicalBfield_five"`
90 }
91
92 type ExtraFieldsTest struct {
93 SchemaField string `json:"SchemaField" database:"ExtraFieldsTestSchemaField"`
94 }
95
96 type FieldMutationHook struct {
97 Name *string `json:"name,omitempty" anotherTag:"tag" database:"FieldMutationHookname"`
98 Enum *ExistingEnum `json:"enum,omitempty" yetAnotherTag:"12" database:"FieldMutationHookenum"`
99 NoVal *string `json:"noVal,omitempty" yaml:"noVal" repeated:"true" database:"FieldMutationHooknoVal"`
100 Repeated *string `json:"repeated,omitempty" someTag:"value" repeated:"true" database:"FieldMutationHookrepeated"`
101 }
102
103 type ImplArrayOfA struct {
104 TrickyField []*CDImplemented `json:"trickyField" database:"ImplArrayOfAtrickyField"`
105 TrickyFieldPointer []*CDImplemented `json:"trickyFieldPointer,omitempty" database:"ImplArrayOfAtrickyFieldPointer"`
106 }
107
108 func (ImplArrayOfA) IsArrayOfA() {}
109
110 type MissingInput struct {
111 Name *string `json:"name,omitempty" database:"MissingInputname"`
112 Enum *MissingEnum `json:"enum,omitempty" database:"MissingInputenum"`
113 NonNullString string `json:"nonNullString" database:"MissingInputnonNullString"`
114 NullString graphql.Omittable[*string] `json:"nullString,omitempty" database:"MissingInputnullString"`
115 NullEnum graphql.Omittable[*MissingEnum] `json:"nullEnum,omitempty" database:"MissingInputnullEnum"`
116 NullObject graphql.Omittable[*ExistingInput] `json:"nullObject,omitempty" database:"MissingInputnullObject"`
117 }
118
119 type MissingTypeNotNull struct {
120 Name string `json:"name" database:"MissingTypeNotNullname"`
121 Enum MissingEnum `json:"enum" database:"MissingTypeNotNullenum"`
122 Int MissingInterface `json:"int" database:"MissingTypeNotNullint"`
123 Existing ExistingType `json:"existing" database:"MissingTypeNotNullexisting"`
124 Missing2 MissingTypeNullable `json:"missing2" database:"MissingTypeNotNullmissing2"`
125 }
126
127 func (MissingTypeNotNull) IsMissingInterface() {}
128
129 func (MissingTypeNotNull) IsExistingInterface() {}
130
131 func (MissingTypeNotNull) IsMissingUnion() {}
132
133 func (MissingTypeNotNull) IsExistingUnion() {}
134
135 type MissingTypeNullable struct {
136 Name *string `json:"name,omitempty" database:"MissingTypeNullablename"`
137 Enum *MissingEnum `json:"enum,omitempty" database:"MissingTypeNullableenum"`
138 Int MissingInterface `json:"int,omitempty" database:"MissingTypeNullableint"`
139 Existing *ExistingType `json:"existing,omitempty" database:"MissingTypeNullableexisting"`
140 Missing2 *MissingTypeNotNull `json:"missing2,omitempty" database:"MissingTypeNullablemissing2"`
141 }
142
143 func (MissingTypeNullable) IsMissingInterface() {}
144
145 func (MissingTypeNullable) IsExistingInterface() {}
146
147 func (MissingTypeNullable) IsMissingUnion() {}
148
149 func (MissingTypeNullable) IsExistingUnion() {}
150
151 type Mutation struct {
152 }
153
154 type NotCyclicalA struct {
155 FieldOne string `json:"FieldOne" database:"NotCyclicalAFieldOne"`
156 FieldTwo int `json:"FieldTwo" database:"NotCyclicalAFieldTwo"`
157 }
158
159 type NotCyclicalB struct {
160 FieldOne string `json:"FieldOne" database:"NotCyclicalBFieldOne"`
161 FieldTwo NotCyclicalA `json:"FieldTwo" database:"NotCyclicalBFieldTwo"`
162 }
163
164 type OmitEmptyJSONTagTest struct {
165 ValueNonNil string `json:"ValueNonNil" database:"OmitEmptyJsonTagTestValueNonNil"`
166 Value *string `json:"Value,omitempty" database:"OmitEmptyJsonTagTestValue"`
167 }
168
169 type Query struct {
170 }
171
172 type Recursive struct {
173 FieldOne *Recursive `json:"FieldOne" database:"RecursiveFieldOne"`
174 FieldTwo *Recursive `json:"FieldTwo" database:"RecursiveFieldTwo"`
175 FieldThree *Recursive `json:"FieldThree" database:"RecursiveFieldThree"`
176 FieldFour string `json:"FieldFour" database:"RecursiveFieldFour"`
177 }
178
179 type RenameFieldTest struct {
180 BadName string `json:"badName" database:"RenameFieldTestbadName"`
181 OtherField string `json:"otherField" database:"RenameFieldTestotherField"`
182 }
183
184 type Subscription struct {
185 }
186
187
188 type TypeWithDescription struct {
189 Name *string `json:"name,omitempty" database:"TypeWithDescriptionname"`
190 }
191
192 func (TypeWithDescription) IsUnionWithDescription() {}
193
194 type Xer struct {
195 Id string `json:"Id" database:"XerId"`
196 Name string `json:"Name" database:"XerName"`
197 }
198
199 func (Xer) IsX() {}
200
201 type FooBarr struct {
202 Name string `json:"name" database:"_Foo_Barrname"`
203 }
204
205 func (FooBarr) IsFooBarer() {}
206
207
208 type EnumWithDescription string
209
210 const (
211 EnumWithDescriptionCat EnumWithDescription = "CAT"
212 EnumWithDescriptionDog EnumWithDescription = "DOG"
213 )
214
215 var AllEnumWithDescription = []EnumWithDescription{
216 EnumWithDescriptionCat,
217 EnumWithDescriptionDog,
218 }
219
220 func (e EnumWithDescription) IsValid() bool {
221 switch e {
222 case EnumWithDescriptionCat, EnumWithDescriptionDog:
223 return true
224 }
225 return false
226 }
227
228 func (e EnumWithDescription) String() string {
229 return string(e)
230 }
231
232 func (e *EnumWithDescription) UnmarshalGQL(v interface{}) error {
233 str, ok := v.(string)
234 if !ok {
235 return fmt.Errorf("enums must be strings")
236 }
237
238 *e = EnumWithDescription(str)
239 if !e.IsValid() {
240 return fmt.Errorf("%s is not a valid EnumWithDescription", str)
241 }
242 return nil
243 }
244
245 func (e EnumWithDescription) MarshalGQL(w io.Writer) {
246 fmt.Fprint(w, strconv.Quote(e.String()))
247 }
248
249 type MissingEnum string
250
251 const (
252 MissingEnumHello MissingEnum = "Hello"
253 MissingEnumGoodbye MissingEnum = "Goodbye"
254 )
255
256 var AllMissingEnum = []MissingEnum{
257 MissingEnumHello,
258 MissingEnumGoodbye,
259 }
260
261 func (e MissingEnum) IsValid() bool {
262 switch e {
263 case MissingEnumHello, MissingEnumGoodbye:
264 return true
265 }
266 return false
267 }
268
269 func (e MissingEnum) String() string {
270 return string(e)
271 }
272
273 func (e *MissingEnum) UnmarshalGQL(v interface{}) error {
274 str, ok := v.(string)
275 if !ok {
276 return fmt.Errorf("enums must be strings")
277 }
278
279 *e = MissingEnum(str)
280 if !e.IsValid() {
281 return fmt.Errorf("%s is not a valid MissingEnum", str)
282 }
283 return nil
284 }
285
286 func (e MissingEnum) MarshalGQL(w io.Writer) {
287 fmt.Fprint(w, strconv.Quote(e.String()))
288 }
289
View as plain text