Documentation
¶
Overview ¶
Package graphql provides functions to trace the graph-gophers/graphql-go package (https://github.com/graph-gophers/graphql-go).
We use the tracing mechanism available in the https://godoc.org/github.com/graph-gophers/graphql-go/trace subpackage. Create a new Tracer with `NewTracer` and pass it as an additional option to `MustParseSchema`.
Example ¶
// Unless explicitly stated otherwise all files in this repository are licensed
// under the Apache License Version 2.0.
// This product includes software developed at Datadog (https://www.datadoghq.com/).
// Copyright 2016 Datadog, Inc.
package main
import (
"log"
"net/http"
graphql "github.com/graph-gophers/graphql-go"
"github.com/graph-gophers/graphql-go/relay"
graphqltrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/graph-gophers/graphql-go"
)
type resolver struct{}
func (*resolver) Hello() string { return "Hello, world!" }
func main() {
s := `
schema {
query: Query
}
type Query {
hello: String!
}
`
schema := graphql.MustParseSchema(s, new(resolver),
graphql.Tracer(graphqltrace.NewTracer()))
http.Handle("/query", &relay.Handler{Schema: schema})
log.Fatal(http.ListenAndServe(":8080", nil))
// then:
// $ curl -XPOST -d '{"query": "{ hello }"}' localhost:8080/query
}
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Option ¶
type Option func(*config)
Option represents an option that can be used customize the Tracer.
func WithAnalytics ¶ added in v1.11.0
WithAnalytics enables Trace Analytics for all started spans.
func WithAnalyticsRate ¶ added in v1.11.0
WithAnalyticsRate sets the sampling rate for Trace Analytics events correlated to started spans.
func WithOmitTrivial ¶ added in v1.33.3
func WithOmitTrivial() Option
WithOmitTrivial enables omission of graphql fields marked as trivial.
func WithServiceName ¶
WithServiceName sets the given service name for the client.
type Tracer ¶
type Tracer struct {
// contains filtered or unexported fields
}
A Tracer implements the graphql-go/trace.Tracer interface by sending traces to the Datadog tracer.
func (*Tracer) TraceField ¶
func (t *Tracer) TraceField(ctx context.Context, label string, typeName string, fieldName string, trivial bool, args map[string]interface{}) (context.Context, trace.TraceFieldFinishFunc)
TraceField traces a GraphQL field access.
func (*Tracer) TraceQuery ¶
func (t *Tracer) TraceQuery(ctx context.Context, queryString string, operationName string, variables map[string]interface{}, varTypes map[string]*introspection.Type) (context.Context, trace.TraceQueryFinishFunc)
TraceQuery traces a GraphQL query.