Documentation
¶
Index ¶
Constants ¶
const (
// MaxQueries is the maximum number of queries to keep
MaxQueries = 1000
)
const ReplayLogMessage = "query replay record"
ReplayLogMessage is the message on every replay record line, for log pipeline filtering.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type QueryInfo ¶
type QueryInfo struct {
Query string `json:"query"`
Count int `json:"count"`
Devs map[string]struct{} `json:"devs"`
// contains filtered or unexported fields
}
QueryInfo contains information about a recorded query
type QueryRecorder ¶
type QueryRecorder struct {
// contains filtered or unexported fields
}
QueryRecorder tracks unique raw queries that have been seen
func (*QueryRecorder) Add ¶
func (qr *QueryRecorder) Add(query string, devID string)
Add records a new query or updates an existing one
func (*QueryRecorder) GetQueries ¶
func (qr *QueryRecorder) GetQueries() []QueryInfo
GetQueries returns a copy of all recorded queries
func (*QueryRecorder) Handler ¶
func (qr *QueryRecorder) Handler() http.Handler
Handler returns an HTTP handler that serves the list of recorded queries
type QueryRecordingExtension ¶
type QueryRecordingExtension struct {
Recorder *QueryRecorder
}
QueryRecordingExtension creates a GraphQL extension that records queries
func (QueryRecordingExtension) ExtensionName ¶
func (QueryRecordingExtension) ExtensionName() string
func (QueryRecordingExtension) InterceptResponse ¶
func (q QueryRecordingExtension) InterceptResponse(ctx context.Context, next graphql.ResponseHandler) *graphql.Response
func (QueryRecordingExtension) Validate ¶
func (QueryRecordingExtension) Validate(schema graphql.ExecutableSchema) error
type ReplayLogger ¶ added in v0.4.13
type ReplayLogger struct {
// contains filtered or unexported fields
}
ReplayLogger is a GraphQL extension that emits one structured log line per operation submitted by an allowlisted developer. Each line carries the raw query, its variables, and the caller's identity so the request can be replayed against another environment.
func NewReplayLogger ¶ added in v0.4.13
func NewReplayLogger(developers string) (*ReplayLogger, error)
NewReplayLogger parses a comma-separated list of developer license addresses into a ReplayLogger. Returns nil if the list is empty, meaning recording is disabled.
func (*ReplayLogger) ExtensionName ¶ added in v0.4.13
func (*ReplayLogger) ExtensionName() string
func (*ReplayLogger) InterceptResponse ¶ added in v0.4.13
func (r *ReplayLogger) InterceptResponse(ctx context.Context, next graphql.ResponseHandler) *graphql.Response
func (*ReplayLogger) Validate ¶ added in v0.4.13
func (*ReplayLogger) Validate(graphql.ExecutableSchema) error