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

Function parseRequest

edgraph/server.go:1722–1773  ·  view source on GitHub ↗

parseRequest parses the incoming request

(ctx context.Context, qc *queryContext)

Source from the content-addressed store, hash-verified

1720
1721// parseRequest parses the incoming request
1722func parseRequest(ctx context.Context, qc *queryContext) error {
1723 start := time.Now()
1724 defer func() {
1725 qc.latency.Parsing = time.Since(start)
1726 }()
1727
1728 var needVars []string
1729 upsertQuery := qc.req.Query
1730 if len(qc.req.Mutations) > 0 {
1731 // parsing mutations
1732 qc.gmuList = make([]*dql.Mutation, 0, len(qc.req.Mutations))
1733 for _, mu := range qc.req.Mutations {
1734 gmu, err := ParseMutationObject(ctx, mu)
1735 if err != nil {
1736 return err
1737 }
1738
1739 qc.gmuList = append(qc.gmuList, gmu)
1740 }
1741
1742 if err := addQueryIfUnique(ctx, qc); err != nil {
1743 return err
1744 }
1745
1746 qc.uidRes = make(map[string][]string)
1747 qc.valRes = make(map[string]*types.ShardedMap)
1748 var err error
1749 upsertQuery, err = buildUpsertQuery(qc)
1750 if err != nil {
1751 return err
1752 }
1753 needVars = findMutationVars(qc)
1754 if upsertQuery == "" {
1755 if len(needVars) > 0 {
1756 return errors.Errorf("variables %v not defined", needVars)
1757 }
1758
1759 return nil
1760 }
1761 }
1762
1763 // parsing the updated query
1764 var err error
1765 qc.dqlRes, err = dql.ParseWithNeedVars(dql.Request{
1766 Str: upsertQuery,
1767 Variables: qc.req.Vars,
1768 }, needVars)
1769 if err != nil {
1770 return err
1771 }
1772 return validateQuery(qc.dqlRes.Query)
1773}
1774
1775// verifyUnique verifies uniqueness of mutation
1776func verifyUnique(qc *queryContext, qr query.Request) error {

Callers 1

doQueryMethod · 0.85

Calls 7

ParseWithNeedVarsFunction · 0.92
ParseMutationObjectFunction · 0.85
addQueryIfUniqueFunction · 0.85
buildUpsertQueryFunction · 0.85
findMutationVarsFunction · 0.85
validateQueryFunction · 0.85
ErrorfMethod · 0.45

Tested by

no test coverage detected