MCPcopy
hub / github.com/dgraph-io/dgraph / ToDirectedEdges

Function ToDirectedEdges

query/mutation.go:213–261  ·  view source on GitHub ↗

ToDirectedEdges converts the dql.Mutation input into a set of directed edges.

(gmuList []*dql.Mutation, newUids map[string]uint64)

Source from the content-addressed store, hash-verified

211
212// ToDirectedEdges converts the dql.Mutation input into a set of directed edges.
213func ToDirectedEdges(gmuList []*dql.Mutation, newUids map[string]uint64) (
214 edges []*pb.DirectedEdge, err error) {
215
216 // Wrapper for a pointer to protos.Nquad
217 var wnq *dql.NQuad
218
219 parse := func(nq *api.NQuad, op pb.DirectedEdge_Op) error {
220 wnq = &dql.NQuad{NQuad: nq}
221 if len(nq.Subject) == 0 {
222 return nil
223 }
224 // Get edge from nquad using newUids.
225 var edge *pb.DirectedEdge
226 edge, err = wnq.ToEdgeUsing(newUids)
227 if err != nil {
228 return errors.Wrap(err, "")
229 }
230 edge.Op = op
231 edges = append(edges, edge)
232 return nil
233 }
234
235 for _, gmu := range gmuList {
236 // We delete first and then we set. Order of the mutation is important.
237 for _, nq := range gmu.Del {
238 if nq.Subject == x.Star && nq.ObjectValue.GetDefaultVal() == x.Star {
239 return edges, errors.New("Predicate deletion should be called via alter")
240 }
241 if err := parse(nq, pb.DirectedEdge_DEL); err != nil {
242 return edges, err
243 }
244 if gmu.AllowedPreds != nil {
245 for _, e := range edges {
246 e.AllowedPreds = gmu.AllowedPreds
247 }
248 }
249 }
250 for _, nq := range gmu.Set {
251 if err := facets.SortAndValidate(nq.Facets); err != nil {
252 return edges, err
253 }
254 if err := parse(nq, pb.DirectedEdge_SET); err != nil {
255 return edges, err
256 }
257 }
258 }
259
260 return edges, nil
261}
262
263func checkIfDeletingAclOperation(ctx context.Context, edges []*pb.DirectedEdge) error {
264 // Don't need to make any checks if ACL is not enabled

Callers 1

doMutateMethod · 0.92

Calls 3

ToEdgeUsingMethod · 0.95
SortAndValidateFunction · 0.92
parseFunction · 0.85

Tested by

no test coverage detected