Documentation ¶
Index ¶
- Constants
- Variables
- func ApplyMutations(ctx context.Context, m *intern.Mutations) (*api.TxnContext, error)
- func AssignUids(ctx context.Context, nquads []*api.NQuad) (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 ToInternal(gmu *gql.Mutation, newUids map[string]uint64) (edges []*intern.DirectedEdge, err error)
- func ToJson(l *Latency, sgl []*SubGraph) ([]byte, error)
- type ExecuteResult
- type Extensions
- type Function
- type InternalError
- type InvalidRequestError
- type Item
- type Latency
- type QueryRequest
- type SubGraph
Constants ¶
const (
FacetDelimeter = "|"
)
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 ApplyMutations ¶
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.
func ToInternal ¶
Types ¶
type ExecuteResult ¶
type ExecuteResult struct { Subgraphs []*SubGraph SchemaNode []*api.SchemaNode }
TODO: This looks unnecessary.
type Extensions ¶
type Extensions struct { Latency *api.Latency `json:"server_latency,omitempty"` Txn *api.TxnContext `json:"txn,omitempty"` }
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) IsValueVar bool // eq(val(s), 10) }
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 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"` }
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 { ReadTs uint64 Latency *Latency GqlQuery *gql.Result Subgraphs []*SubGraph LinRead *api.LinRead // 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) Process ¶
func (qr *QueryRequest) Process(ctx context.Context) (er ExecuteResult, err error)
func (*QueryRequest) ProcessQuery ¶
func (req *QueryRequest) ProcessQuery(ctx context.Context) (err error)
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.
type SubGraph ¶
type SubGraph struct { ReadTs uint64 LinRead *api.LinRead Attr string Params params ExpandPreds []*intern.ValueList GroupbyRes []*groupResults // one result for each uid list. LangTags []*intern.LangList // SrcUIDs is a list of unique source UIDs. They are always copies of destUIDs // of parent nodes in GraphQL structure. SrcUIDs *intern.List SrcFunc *Function FilterOp string Filters []*SubGraph MathExp *mathTree Children []*SubGraph // destUIDs is a list of destination UIDs, after applying filters, pagination. DestUIDs *intern.List List bool // whether predicate is of list type // contains filtered or unexported fields }
SubGraph is the way to represent data intern.y. 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 intern.SubGraph instance type.
func (*SubGraph) ApplyIneqFunc ¶
func (*SubGraph) DebugPrint ¶
DebugPrint prints out the SubGraph tree in a nice format for debugging purposes.