Documentation ¶
Index ¶
- Variables
- func ApplyMutations(ctx context.Context, m *protos.Mutations) error
- func AssignUids(ctx context.Context, nquads gql.NQuads) (map[string]uint64, error)
- func ConvertUidsToHex(m map[string]uint64) (res map[string]string)
- func GetAllPredicates(subGraphs []*SubGraph) (predicates []string)
- func ProcessGraph(ctx context.Context, sg, parent *SubGraph, rch chan error)
- func Recurse(ctx context.Context, sg *SubGraph) error
- func StripBlankNode(mp map[string]uint64) map[string]uint64
- func ToJson(l *Latency, sgl []*SubGraph, w io.Writer, allocIds map[string]string, ...) error
- func ToProtocolBuf(l *Latency, sgl []*SubGraph) ([]*protos.Node, error)
- type Codec
- type ExecuteResult
- type Extensions
- type Function
- type InternalError
- type InternalMutation
- type InvalidRequestError
- type Item
- type Latency
- type QueryRequest
- type SubGraph
Constants ¶
This section is empty.
Variables ¶
var ( ErrEmptyVal = errors.New("query: harmless error, e.g. task.Val is nil") ErrWrongAgg = errors.New("Wrong level for var aggregation.") )
var ErrFacet = x.Errorf("Skip the edge")
var ErrStop = x.Errorf("STOP")
var ErrTooBig = x.Errorf("Query exceeded memory limit. Please modify the query")
var MutationNotAllowedErr = x.Errorf("Mutations are forbidden on this server.")
Functions ¶
func AssignUids ¶
func ConvertUidsToHex ¶
convert the new UIDs to hex string.
func GetAllPredicates ¶
func ProcessGraph ¶
ProcessGraph processes the SubGraph instance accumulating result for the query from different instances. Note: taskQuery is nil for root node.
Types ¶
type Codec ¶
type Codec struct{}
Codec implements the custom codec interface.
type ExecuteResult ¶
type ExecuteResult struct { Subgraphs []*SubGraph SchemaNode []*protos.SchemaNode Allocations map[string]uint64 // Blank node => uid map returned for a mutation request. }
type Extensions ¶
type Function ¶
type Function struct { Name string // Specifies the name of the function. Args []gql.Arg // Contains the arguments of the function. IsCount bool // gt(count(friends),0) }
Function holds the information about gql functions.
type InternalError ¶
type InternalError struct {
// contains filtered or unexported fields
}
func (*InternalError) Error ¶
func (e *InternalError) Error() string
type InternalMutation ¶
type InternalMutation struct {
Edges []*protos.DirectedEdge
}
func ToInternal ¶
func (*InternalMutation) AddEdge ¶
func (mr *InternalMutation) AddEdge(edge *protos.DirectedEdge, op protos.DirectedEdge_Op)
type InvalidRequestError ¶
type InvalidRequestError struct {
// contains filtered or unexported fields
}
func (*InvalidRequestError) Error ¶
func (e *InvalidRequestError) Error() string
type Latency ¶
type Latency struct { Start time.Time `json:"-"` Parsing time.Duration `json:"query_parsing"` Processing time.Duration `json:"processing"` Json time.Duration `json:"json_conversion"` ProtocolBuffer time.Duration `json:"pb_conversion"` }
Latency is used to keep track of the latency involved in parsing and processing the query. It also contains information about the time it took to convert the result into a format(JSON/Protocol Buffer) that the client expects.
type QueryRequest ¶
type QueryRequest struct { Latency *Latency GqlQuery *gql.Result Subgraphs []*SubGraph SchemaUpdate []*protos.SchemaUpdate // contains filtered or unexported fields }
QueryRequest wraps the state that is used when executing query. Initially Latency and GqlQuery needs to be set. Subgraphs, Vars and schemaUpdate are filled when processing query.
func (*QueryRequest) ProcessQuery ¶
ProcessQuery processes query part of the request (without mutations). Fills Subgraphs and Vars. It optionally also returns a map of the allocated uids in case of an upsert request.
func (*QueryRequest) ProcessWithMutation ¶
func (qr *QueryRequest) ProcessWithMutation(ctx context.Context) (er ExecuteResult, err error)
type SubGraph ¶
type SubGraph struct { Attr string Params params ExpandPreds []*protos.ValueList GroupbyRes *groupResults // SrcUIDs is a list of unique source UIDs. They are always copies of destUIDs // of parent nodes in GraphQL structure. SrcUIDs *protos.List SrcFunc *Function FilterOp string Filters []*SubGraph MathExp *mathTree Children []*SubGraph // destUIDs is a list of destination UIDs, after applying filters, pagination. DestUIDs *protos.List // contains filtered or unexported fields }
SubGraph is the way to represent data internally. It contains both the query and the response. Once generated, this can then be encoded to other client convenient formats, like GraphQL / JSON.
func ToSubGraph ¶
ToSubGraph converts the GraphQuery into the internal SubGraph instance type.
func (*SubGraph) ApplyIneqFunc ¶
func (*SubGraph) DebugPrint ¶
DebugPrint prints out the SubGraph tree in a nice format for debugging purposes.