forked from wundergraph/graphql-go-tools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ast_input_object_type_extension.go
62 lines (50 loc) · 2.97 KB
/
ast_input_object_type_extension.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
package ast
import (
"github.com/dchukmasov/graphql-go-tools/internal/pkg/unsafebytes"
"github.com/dchukmasov/graphql-go-tools/pkg/lexer/position"
)
type InputObjectTypeExtension struct {
ExtendLiteral position.Position
InputObjectTypeDefinition
}
func (d *Document) InputObjectTypeExtensionNameBytes(ref int) ByteSlice {
return d.Input.ByteSlice(d.InputObjectTypeExtensions[ref].Name)
}
func (d *Document) InputObjectTypeExtensionNameString(ref int) string {
return unsafebytes.BytesToString(d.Input.ByteSlice(d.InputObjectTypeExtensions[ref].Name))
}
func (d *Document) InputObjectTypeExtensionDescriptionBytes(ref int) ByteSlice {
if !d.InputObjectTypeExtensions[ref].Description.IsDefined {
return nil
}
return d.Input.ByteSlice(d.InputObjectTypeExtensions[ref].Description.Content)
}
func (d *Document) InputObjectTypeExtensionDescriptionString(ref int) string {
return unsafebytes.BytesToString(d.InputObjectTypeExtensionDescriptionBytes(ref))
}
func (d *Document) InputObjectTypeExtensionHasInputFieldsDefinition(ref int) bool {
return d.InputObjectTypeExtensions[ref].HasInputFieldsDefinition
}
func (d *Document) InputObjectTypeExtensionHasDirectives(ref int) bool {
return d.InputObjectTypeExtensions[ref].HasDirectives
}
func (d *Document) ExtendInputObjectTypeDefinitionByInputObjectTypeExtension(inputObjectTypeDefinitionRef, inputObjectTypeExtensionRef int) {
if d.InputObjectTypeExtensionHasDirectives(inputObjectTypeExtensionRef) {
d.InputObjectTypeDefinitions[inputObjectTypeDefinitionRef].Directives.Refs = append(d.InputObjectTypeDefinitions[inputObjectTypeDefinitionRef].Directives.Refs, d.InputObjectTypeExtensions[inputObjectTypeExtensionRef].Directives.Refs...)
d.InputObjectTypeDefinitions[inputObjectTypeDefinitionRef].HasDirectives = true
}
if d.InputObjectTypeExtensionHasInputFieldsDefinition(inputObjectTypeExtensionRef) {
d.InputObjectTypeDefinitions[inputObjectTypeDefinitionRef].InputFieldsDefinition.Refs = append(d.InputObjectTypeDefinitions[inputObjectTypeDefinitionRef].InputFieldsDefinition.Refs, d.InputObjectTypeExtensions[inputObjectTypeExtensionRef].InputFieldsDefinition.Refs...)
d.InputObjectTypeDefinitions[inputObjectTypeDefinitionRef].HasInputFieldsDefinition = true
}
d.Index.MergedTypeExtensions = append(d.Index.MergedTypeExtensions, Node{Ref: inputObjectTypeExtensionRef, Kind: NodeKindInputObjectTypeExtension})
}
func (d *Document) ImportAndExtendInputObjectTypeDefinitionByInputObjectTypeExtension(inputObjectTypeExtensionRef int) {
d.ImportInputObjectTypeDefinitionWithDirectives(
d.InputObjectTypeExtensionNameString(inputObjectTypeExtensionRef),
d.InputObjectTypeExtensionDescriptionString(inputObjectTypeExtensionRef),
d.InputObjectTypeExtensions[inputObjectTypeExtensionRef].InputFieldsDefinition.Refs,
d.InputObjectTypeExtensions[inputObjectTypeExtensionRef].Directives.Refs,
)
d.Index.MergedTypeExtensions = append(d.Index.MergedTypeExtensions, Node{Ref: inputObjectTypeExtensionRef, Kind: NodeKindInputObjectTypeExtension})
}