Skip to content

Commit

Permalink
Merge pull request #24 from fenos/revert-23-main
Browse files Browse the repository at this point in the history
Revert "Upgrade to dgo v210 and test fixes"
  • Loading branch information
droslean committed Jan 3, 2023
2 parents aa3af6b + 275be41 commit 8ff4e72
Show file tree
Hide file tree
Showing 11 changed files with 61 additions and 99 deletions.
4 changes: 2 additions & 2 deletions dqlx.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package dqlx
import (
"context"

"github.com/dgraph-io/dgo/v210"
"github.com/dgraph-io/dgo/v210/protos/api"
"github.com/dgraph-io/dgo/v200"
"github.com/dgraph-io/dgo/v200/protos/api"
"google.golang.org/grpc"
)

Expand Down
4 changes: 2 additions & 2 deletions executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import (
"encoding/json"
"errors"

dgo "github.com/dgraph-io/dgo/v210"
"github.com/dgraph-io/dgo/v210/protos/api"
dgo "github.com/dgraph-io/dgo/v200"
"github.com/dgraph-io/dgo/v200/protos/api"
)

// OperationExecutor represents a Dgraph executor for operations
Expand Down
2 changes: 1 addition & 1 deletion executor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"testing"
"time"

"github.com/dgraph-io/dgo/v210/protos/api"
"github.com/dgraph-io/dgo/v200/protos/api"

"github.com/stretchr/testify/require"
)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/fenos/dqlx
go 1.16

require (
github.com/dgraph-io/dgo/v210 v210.0.0-20220113041351-ba0e5dfc4c3e
github.com/dgraph-io/dgo/v200 v200.0.0-20210401091508-95bfd74de60e
github.com/pkg/errors v0.9.1 // indirect
github.com/stretchr/testify v1.7.0
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 // indirect
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgraph-io/dgo/v210 v210.0.0-20220113041351-ba0e5dfc4c3e h1:+RV+hvGYPEqTABBflJss35nBDU9GNq4aKVR85dKqSz0=
github.com/dgraph-io/dgo/v210 v210.0.0-20220113041351-ba0e5dfc4c3e/go.mod h1:dCzdThGGTPYOAuNtrM6BiXj/86voHn7ZzkPL6noXR3s=
github.com/dgraph-io/dgo/v200 v200.0.0-20210401091508-95bfd74de60e h1:kdH2yqGYUl5xJARdI5kN1fjhVUV2sLC+vL1CVXhcAfo=
github.com/dgraph-io/dgo/v200 v200.0.0-20210401091508-95bfd74de60e/go.mod h1:zCfS4R3E/UC/PhETXJYq/Blia0eCH1EQqKrWDvvimxE=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
Expand Down
3 changes: 1 addition & 2 deletions mutation.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@ package dqlx
import (
"bytes"
"context"
"github.com/dgraph-io/dgo/v200"
"strings"

"github.com/dgraph-io/dgo/v210"
)

// MutationBuilder used to construct mutations
Expand Down
113 changes: 44 additions & 69 deletions query.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"context"
"strings"

"github.com/dgraph-io/dgo/v210"
"github.com/dgraph-io/dgo/v200"
)

// QueryBuilder represents the public API for building a secure dynamic Dgraph
Expand All @@ -21,8 +21,7 @@ type QueryBuilder struct {
// Query initializes the query builder with the provided root filter.
//
// example:
//
// dqlx.Query(dqlx.EqFn(..,..))
// dqlx.Query(dqlx.EqFn(..,..))
func Query(rootQueryFn *FilterFn) QueryBuilder {
var rootFilter DQLizer

Expand Down Expand Up @@ -51,9 +50,8 @@ func Query(rootQueryFn *FilterFn) QueryBuilder {
// QueryType alias to initialize a query with the root function type()
//
// Example:
//
// dqlx.QueryType("User")
// dqlx.Query(dqlx.TypeFn("User")) // equivalent
// dqlx.QueryType("User")
// dqlx.Query(dqlx.TypeFn("User")) // equivalent
func QueryType(typeName string) QueryBuilder {
return Query(TypeFn(typeName))
}
Expand All @@ -62,17 +60,15 @@ func QueryType(typeName string) QueryBuilder {
// Useful for reusable edges.
//
// Example:
//
// dqlx.QueryEdge("name", dqlx.EqFn(..,..))
// dqlx.QueryEdge("name", dqlx.EqFn(..,..))
func QueryEdge(edgeName string, rootQueryFn *FilterFn) QueryBuilder {
return Query(rootQueryFn).Name(edgeName)
}

// Variable initializes a variable query builder.
//
// Example:
//
// dqlx.Variable(dqlx.EqFn(..,..))
// dqlx.Variable(dqlx.EqFn(..,..))
func Variable(rootQueryFn *FilterFn) QueryBuilder {
query := Query(rootQueryFn)
query.rootEdge.IsVariable = true
Expand All @@ -82,8 +78,7 @@ func Variable(rootQueryFn *FilterFn) QueryBuilder {
// As sets an alias for the edge.
//
// Example:
//
// dqlx.Query(...).As("C") // -> { C as rootQuery(func: ...) { ... } }
// dqlx.Query(...).As("C") // -> { C as rootQuery(func: ...) { ... } }
func (builder QueryBuilder) As(name string) QueryBuilder {
builder.rootEdge.Alias = name
return builder
Expand All @@ -92,8 +87,7 @@ func (builder QueryBuilder) As(name string) QueryBuilder {
// Name sets the name of the edge.
//
// Example:
//
// dqlx.Query(...).Name("bladerunner") // -> { bladerunner(func: ...) { ... }
// dqlx.Query(...).Name("bladerunner") // -> { bladerunner(func: ...) { ... }
func (builder QueryBuilder) Name(name string) QueryBuilder {
builder.rootEdge.Name = name
builder.rootEdge.Node.ParentName = name
Expand All @@ -103,17 +97,15 @@ func (builder QueryBuilder) Name(name string) QueryBuilder {
// ToDQL returns the current state of the query as a DQL string.
//
// Example:
//
// dqlx.Query(...).ToDQL()
// dqlx.Query(...).ToDQL()
func (builder QueryBuilder) ToDQL() (query string, args map[string]string, err error) {
return QueriesToDQL(builder)
}

// Variable registers a variable within the query
//
// Example:
//
// dqlx.Query(...).Variable(variable)
// dqlx.Query(...).Variable(variable)
func (builder QueryBuilder) Variable(queryBuilder QueryBuilder) QueryBuilder {
builder.variables = append(builder.variables, queryBuilder)
return builder
Expand All @@ -122,13 +114,12 @@ func (builder QueryBuilder) Variable(queryBuilder QueryBuilder) QueryBuilder {
// Select assigns predicates to the selection set.
//
// Examples:
//
// dqlx.Query(...).Select(`
// field1
// field2
// field3
// `)
// dqlx.Query(...).Select("field1", "field2", "field3")
// dqlx.Query(...).Select(`
// field1
// field2
// field3
// `)
// dqlx.Query(...).Select("field1", "field2", "field3")
func (builder QueryBuilder) Select(predicates ...interface{}) QueryBuilder {
if len(predicates) == 0 {
return builder
Expand Down Expand Up @@ -157,9 +148,8 @@ func (builder QueryBuilder) Fields(predicates ...interface{}) QueryBuilder {
// Facets requests facets for the current query
//
// Examples:
//
// dqlx.Query(...).Facets("field1")
// dqlx.Query(...).Facets(dqlx.Eq{"field1": "value"})
// dqlx.Query(...).Facets("field1")
// dqlx.Query(...).Facets(dqlx.Eq{"field1": "value"})
func (builder QueryBuilder) Facets(predicates ...interface{}) QueryBuilder {
builder.rootEdge.Facets = append(builder.rootEdge.Facets, facetExpr{
Predicates: predicates,
Expand All @@ -171,9 +161,8 @@ func (builder QueryBuilder) Facets(predicates ...interface{}) QueryBuilder {
// Order requests an ordering for the result set
//
// Examples:
//
// dqlx.Query(...).Order(dqlx.OrderAsc("field1"))
// dqlx.Query(...).Order(dqlx.OrderDesc("field2"))
// dqlx.Query(...).Order(dqlx.OrderAsc("field1"))
// dqlx.Query(...).Order(dqlx.OrderDesc("field2"))
func (builder QueryBuilder) Order(order DQLizer) QueryBuilder {
builder.rootEdge.Order = append(builder.rootEdge.Order, order)
return builder
Expand All @@ -182,9 +171,8 @@ func (builder QueryBuilder) Order(order DQLizer) QueryBuilder {
// OrderAsc alias for ordering in ascending order
//
// Example:
//
// dqlx.Query(...).OrderAsc("field1")
// dqlx.Query(...).Order(dqlx.OrderAsc("field1")) // equivalent
// dqlx.Query(...).OrderAsc("field1")
// dqlx.Query(...).Order(dqlx.OrderAsc("field1")) // equivalent
func (builder QueryBuilder) OrderAsc(predicate interface{}) QueryBuilder {
builder.rootEdge.Order = append(builder.rootEdge.Order, orderBy{
Direction: OrderDirectionAsc,
Expand All @@ -196,9 +184,8 @@ func (builder QueryBuilder) OrderAsc(predicate interface{}) QueryBuilder {
// OrderDesc alias for ordering in descending order
//
// Example:
//
// dqlx.Query(...).OrderDesc("field1")
// dqlx.Query(...).Order(dqlx.OrderDesc("field1")) // equivalent
// dqlx.Query(...).OrderDesc("field1")
// dqlx.Query(...).Order(dqlx.OrderDesc("field1")) // equivalent
func (builder QueryBuilder) OrderDesc(predicate interface{}) QueryBuilder {
builder.rootEdge.Order = append(builder.rootEdge.Order, orderBy{
Direction: OrderDirectionDesc,
Expand All @@ -210,8 +197,7 @@ func (builder QueryBuilder) OrderDesc(predicate interface{}) QueryBuilder {
// Filter requests filters for this query
//
// Example:
//
// dqlx.Query(...).Filter(dqlx.Eq{...}, dqlx.Gt{...})
// dqlx.Query(...).Filter(dqlx.Eq{...}, dqlx.Gt{...})
func (builder QueryBuilder) Filter(filters ...DQLizer) QueryBuilder {
for _, filter := range filters {
builder.rootEdge.Filters = append(builder.rootEdge.Filters, filter)
Expand All @@ -222,8 +208,7 @@ func (builder QueryBuilder) Filter(filters ...DQLizer) QueryBuilder {
// Paginate requests paginated results
//
// Example:
//
// dqlx.Query(...).Paginate(dqlx.Cursor{...})
// dqlx.Query(...).Paginate(dqlx.Cursor{...})
func (builder QueryBuilder) Paginate(pagination Cursor) QueryBuilder {
builder.rootEdge.Pagination = pagination
return builder
Expand All @@ -247,19 +232,17 @@ func (builder QueryBuilder) Cascade(fields ...string) QueryBuilder {
// Edge adds an edge in the query selection.
//
// Examples:
//
// dqlx.Query(...).Edge("path")
// dqlx.Query(...).Edge("parent->child->child")
// dqlx.Query(...).Edge("parent->child->child", dqlx.Select(""))
// dqlx.Query(...).Edge("path")
// dqlx.Query(...).Edge("parent->child->child")
// dqlx.Query(...).Edge("parent->child->child", dqlx.Select(""))
func (builder QueryBuilder) Edge(fullPath string, queryParts ...DQLizer) QueryBuilder {
return builder.EdgeAs("", fullPath, queryParts...)
}

// EdgeAs adds an aliased edge in the query selection.
//
// Example:
//
// dqlx.Query(...).EdgeAs("C", "path", ...)
// dqlx.Query(...).EdgeAs("C", "path", ...)
func (builder QueryBuilder) EdgeAs(as string, fullPath string, queryParts ...DQLizer) QueryBuilder {
return builder.EdgeFnAs(as, fullPath, func(builder QueryBuilder) QueryBuilder {
for _, part := range queryParts {
Expand Down Expand Up @@ -290,9 +273,8 @@ func (builder QueryBuilder) EdgeAs(as string, fullPath string, queryParts ...DQL
// the path.
//
// Example:
//
// dqlx.Query(...).EdgePath([]string{"parent", "child", "child")
// dqlx.Query(...).Edge("parent->child->child") // equivalent
// dqlx.Query(...).EdgePath([]string{"parent", "child", "child")
// dqlx.Query(...).Edge("parent->child->child") // equivalent
func (builder QueryBuilder) EdgePath(fullPath []string, queryParts ...DQLizer) QueryBuilder {
return builder.Edge(EdgePath(fullPath...), queryParts...)
}
Expand All @@ -301,20 +283,18 @@ func (builder QueryBuilder) EdgePath(fullPath []string, queryParts ...DQLizer) Q
// to define the path.
//
// Example:
//
// dqlx.Query(...).EdgePathAs([]string{"parent", "child", "child")
// dqlx.Query(...).EdgeAs("parent->child->child") // equivalent
// dqlx.Query(...).EdgePathAs([]string{"parent", "child", "child")
// dqlx.Query(...).EdgeAs("parent->child->child") // equivalent
func (builder QueryBuilder) EdgePathAs(as string, fullPath []string, queryParts ...DQLizer) QueryBuilder {
return builder.EdgeAs(as, EdgePath(fullPath...), queryParts...)
}

// EdgeFn adds an edge in the query selection with a callback and query methods.
//
// Example:
//
// dqlx.Query(...).EdgeFn("path", func(builder QueryBuilder) {
// return builder.Select(...).Filter(...)
// })
// dqlx.Query(...).EdgeFn("path", func(builder QueryBuilder) {
// return builder.Select(...).Filter(...)
// })
func (builder QueryBuilder) EdgeFn(fullPath string, fn func(builder QueryBuilder) QueryBuilder) QueryBuilder {
return builder.addEdgeFn("", QueryEdge(fullPath, nil), fn)
}
Expand All @@ -323,19 +303,17 @@ func (builder QueryBuilder) EdgeFn(fullPath string, fn func(builder QueryBuilder
// query methods.
//
// Example:
//
// dqlx.Query(...).EdgeFn("path", func(builder QueryBuilder) {
// return builder.Select(...).Filter(...)
// })
// dqlx.Query(...).EdgeFn("path", func(builder QueryBuilder) {
// return builder.Select(...).Filter(...)
// })
func (builder QueryBuilder) EdgeFnAs(as string, fullPath string, fn func(builder QueryBuilder) QueryBuilder) QueryBuilder {
return builder.addEdgeFn(as, QueryEdge(fullPath, nil), fn)
}

// EdgeFromQuery adds an external constructed edge to the query.
//
// Example:
//
// dqlx.Query(...).EdgeFromQuery(dqlx.Query(...))
// dqlx.Query(...).EdgeFromQuery(dqlx.Query(...))
func (builder QueryBuilder) EdgeFromQuery(edge QueryBuilder) QueryBuilder {
return builder.addEdgeFn("", edge, nil)
}
Expand All @@ -344,8 +322,7 @@ func (builder QueryBuilder) EdgeFromQuery(edge QueryBuilder) QueryBuilder {
// interface{}.
//
// Example:
//
// dqlx.Query(...).UnmarshalInto(&value)+
// dqlx.Query(...).UnmarshalInto(&value)+
func (builder QueryBuilder) UnmarshalInto(value interface{}) QueryBuilder {
builder.unmarshalInto = value
return builder
Expand All @@ -354,8 +331,7 @@ func (builder QueryBuilder) UnmarshalInto(value interface{}) QueryBuilder {
// WithDClient allows to swap the underline dgo.Dgraph client.
//
// Example:
//
// dqlx.Query(...).WithDClient(dgoClient)
// dqlx.Query(...).WithDClient(dgoClient)
func (builder QueryBuilder) WithDClient(client *dgo.Dgraph) QueryBuilder {
builder.client = client
return builder
Expand All @@ -365,8 +341,7 @@ func (builder QueryBuilder) WithDClient(client *dgo.Dgraph) QueryBuilder {
// operation to DGraph.
//
// Example:
//
// dqlx.Query(...).Execute(ctx, ...)
// dqlx.Query(...).Execute(ctx, ...)
func (builder QueryBuilder) Execute(ctx context.Context, options ...OperationExecutorOptionFn) (*Response, error) {
executor := NewDGoExecutor(builder.client)

Expand Down
20 changes: 4 additions & 16 deletions query_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (

"github.com/fenos/dqlx/testdata"

"github.com/dgraph-io/dgo/v210/protos/api"
"github.com/dgraph-io/dgo/v200/protos/api"

"github.com/fenos/dqlx"
"github.com/stretchr/testify/require"
Expand Down Expand Up @@ -183,26 +183,14 @@ func (suite *QueryIntegrationTest) TestFundamentals() {

require.NoError(suite.T(), err)
require.Len(suite.T(), result, 2)
require.Len(suite.T(), result[0]["director.film"], 10)

var filmDirectors interface{}
var other interface{}
for _, v := range result {
if r, ok := v["director.film"]; ok {
filmDirectors = r
} else {
other = v
}
}

require.Len(suite.T(), filmDirectors, 10)
require.NotEmpty(suite.T(), other)

suite.recordsContainsProperties(filmDirectors, []string{
suite.recordsContainsProperties(result[0]["director.film"].([]interface{}), []string{
"name@en",
"initial_release_date",
})

require.NotContains(suite.T(), other, "director.film")
require.NotContains(suite.T(), result[1], "director.film")
})

suite.Run("Language support", func() {
Expand Down
Loading

0 comments on commit 8ff4e72

Please sign in to comment.