diff --git a/server/main.go b/server/main.go index 51db34f9da2202a26f2e89fda7b7f632ed6060f7..ec6a5a6fc8def6b1b2ebcc142f650841ab8bcefd 100644 --- a/server/main.go +++ b/server/main.go @@ -226,12 +226,24 @@ func (s *server) Query(ctx context.Context, // TODO(pawan): Refactor query parsing and graph processing code to a common // function used by Query and queryHandler glog.WithField("q", req.Query).Debug("Query received.") - gq, _, err := gql.Parse(req.Query) + gq, mu, err := gql.Parse(req.Query) if err != nil { x.Err(glog, err).Error("While parsing query") return resp, err } + // If we have mutations, run them first. + if mu != nil && len(mu.Set) > 0 { + if err = mutationHandler(mu); err != nil { + glog.WithError(err).Error("While handling mutations.") + return resp, err + } + } + + if gq == nil || (gq.UID == 0 && len(gq.XID) == 0) { + return resp, err + } + sg, err := query.ToSubGraph(gq) if err != nil { x.Err(glog, err).Error("While conversion to internal format")