mirror of
https://github.com/stashapp/stash.git
synced 2025-12-16 05:13:46 +01:00
72 lines
1.3 KiB
Go
72 lines
1.3 KiB
Go
// introspection implements the spec defined in https://github.com/facebook/graphql/blob/master/spec/Section%204%20--%20Introspection.md#schema-introspection
|
|
package introspection
|
|
|
|
import "github.com/vektah/gqlparser/ast"
|
|
|
|
type (
|
|
Directive struct {
|
|
Name string
|
|
Description string
|
|
Locations []string
|
|
Args []InputValue
|
|
}
|
|
|
|
EnumValue struct {
|
|
Name string
|
|
Description string
|
|
deprecation *ast.Directive
|
|
}
|
|
|
|
Field struct {
|
|
Name string
|
|
Description string
|
|
Type *Type
|
|
Args []InputValue
|
|
deprecation *ast.Directive
|
|
}
|
|
|
|
InputValue struct {
|
|
Name string
|
|
Description string
|
|
DefaultValue *string
|
|
Type *Type
|
|
}
|
|
)
|
|
|
|
func WrapSchema(schema *ast.Schema) *Schema {
|
|
return &Schema{schema: schema}
|
|
}
|
|
|
|
func (f *EnumValue) IsDeprecated() bool {
|
|
return f.deprecation != nil
|
|
}
|
|
|
|
func (f *EnumValue) DeprecationReason() *string {
|
|
if f.deprecation == nil {
|
|
return nil
|
|
}
|
|
|
|
reason := f.deprecation.Arguments.ForName("reason")
|
|
if reason == nil {
|
|
return nil
|
|
}
|
|
|
|
return &reason.Value.Raw
|
|
}
|
|
|
|
func (f *Field) IsDeprecated() bool {
|
|
return f.deprecation != nil
|
|
}
|
|
|
|
func (f *Field) DeprecationReason() *string {
|
|
if f.deprecation == nil {
|
|
return nil
|
|
}
|
|
|
|
reason := f.deprecation.Arguments.ForName("reason")
|
|
if reason == nil {
|
|
return nil
|
|
}
|
|
|
|
return &reason.Value.Raw
|
|
}
|