Skip to content

Commit a942dff

Browse files
authored
Merge pull request #149 from erizocosmico/feature/session
gitquery: implement session
2 parents 9626be9 + 895e68d commit a942dff

18 files changed

+97
-49
lines changed

blobs.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ func (blobsTable) Schema() sql.Schema {
2929
}
3030
}
3131

32-
func (r *blobsTable) TransformUp(f func(sql.Node) sql.Node) sql.Node {
32+
func (r *blobsTable) TransformUp(f func(sql.Node) (sql.Node, error)) (sql.Node, error) {
3333
return f(r)
3434
}
3535

36-
func (r *blobsTable) TransformExpressionsUp(f func(sql.Expression) sql.Expression) sql.Node {
37-
return r
36+
func (r *blobsTable) TransformExpressionsUp(f func(sql.Expression) (sql.Expression, error)) (sql.Node, error) {
37+
return r, nil
3838
}
3939

40-
func (r blobsTable) RowIter() (sql.RowIter, error) {
40+
func (r blobsTable) RowIter(_ sql.Session) (sql.RowIter, error) {
4141
iter := &blobIter{}
4242

4343
repoIter, err := NewRowRepoIter(r.pool, iter)

blobs_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package gitquery
22

33
import (
4+
"context"
45
"testing"
56

67
"github.com/stretchr/testify/require"
@@ -31,7 +32,7 @@ func TestBlobsTable_RowIter(t *testing.T) {
3132
f := fixtures.Basic().One()
3233
table := getTable(require, f, blobsTableName)
3334

34-
rows, err := sql.NodeToRows(table)
35+
rows, err := sql.NodeToRows(sql.NewBaseSession(context.TODO()), table)
3536
require.Nil(err)
3637
require.Len(rows, 10)
3738

cmd/gitquery/server.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ type CmdServer struct {
2222
Password string `short:"P" long:"password" default:"" description:"Password used for connection"`
2323

2424
engine *sqle.Engine
25+
pool *gitquery.RepositoryPool
2526
name string
2627
}
2728

@@ -35,12 +36,13 @@ func (c *CmdServer) buildDatabase() error {
3536
var err error
3637

3738
pool := gitquery.NewRepositoryPool()
38-
err = pool.AddDir(c.Git)
39+
c.pool = &pool
40+
err = c.pool.AddDir(c.Git)
3941
if err != nil {
4042
return err
4143
}
4244

43-
c.engine.AddDatabase(gitquery.NewDatabase(c.name, &pool))
45+
c.engine.AddDatabase(gitquery.NewDatabase(c.name, c.pool))
4446
function.Register(c.engine.Catalog)
4547
return nil
4648
}
@@ -57,7 +59,13 @@ func (c *CmdServer) Execute(args []string) error {
5759
}
5860

5961
hostString := net.JoinHostPort(c.Host, strconv.Itoa(c.Port))
60-
s, err := server.NewServer("tcp", hostString, auth, c.engine)
62+
s, err := server.NewServer(
63+
"tcp",
64+
hostString,
65+
auth,
66+
c.engine,
67+
gitquery.NewSessionBuilder(c.pool),
68+
)
6169
if err != nil {
6270
return err
6371
}

commits.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ func (commitsTable) Schema() sql.Schema {
3535
}
3636
}
3737

38-
func (r *commitsTable) TransformUp(f func(sql.Node) sql.Node) sql.Node {
38+
func (r *commitsTable) TransformUp(f func(sql.Node) (sql.Node, error)) (sql.Node, error) {
3939
return f(r)
4040
}
4141

42-
func (r *commitsTable) TransformExpressionsUp(f func(sql.Expression) sql.Expression) sql.Node {
43-
return r
42+
func (r *commitsTable) TransformExpressionsUp(f func(sql.Expression) (sql.Expression, error)) (sql.Node, error) {
43+
return r, nil
4444
}
4545

46-
func (r commitsTable) RowIter() (sql.RowIter, error) {
46+
func (r commitsTable) RowIter(_ sql.Session) (sql.RowIter, error) {
4747
iter := &commitIter{}
4848

4949
repoIter, err := NewRowRepoIter(r.pool, iter)

commits_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package gitquery
22

33
import (
4+
"context"
45
"testing"
56

67
"github.com/stretchr/testify/require"
@@ -31,7 +32,7 @@ func TestCommitsTable_RowIter(t *testing.T) {
3132
f := fixtures.Basic().One()
3233
table := getTable(require, f, commitsTableName)
3334

34-
rows, err := sql.NodeToRows(table)
35+
rows, err := sql.NodeToRows(sql.NewBaseSession(context.TODO()), table)
3536
require.Nil(err)
3637
require.Len(rows, 9)
3738

internal/function/is_remote.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,9 @@ func NewIsRemote(e sql.Expression) sql.Expression {
1818
return &IsRemote{expression.UnaryExpression{Child: e}}
1919
}
2020

21-
var _ sql.Expression = (*IsRemote)(nil)
22-
2321
// Eval implements the expression interface.
24-
func (f *IsRemote) Eval(row sql.Row) (interface{}, error) {
25-
val, err := f.Child.Eval(row)
22+
func (f *IsRemote) Eval(session sql.Session, row sql.Row) (interface{}, error) {
23+
val, err := f.Child.Eval(session, row)
2624
if err != nil {
2725
return nil, err
2826
}
@@ -45,8 +43,12 @@ func (IsRemote) Name() string {
4543
}
4644

4745
// TransformUp implements the Expression interface.
48-
func (f IsRemote) TransformUp(fn func(sql.Expression) sql.Expression) sql.Expression {
49-
return NewIsRemote(fn(f.Child))
46+
func (f IsRemote) TransformUp(fn func(sql.Expression) (sql.Expression, error)) (sql.Expression, error) {
47+
child, err := f.Child.TransformUp(fn)
48+
if err != nil {
49+
return nil, err
50+
}
51+
return fn(NewIsRemote(child))
5052
}
5153

5254
// Type implements the Expression interface.

internal/function/is_remote_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package function
22

33
import (
4+
"context"
45
"testing"
56

67
"github.com/stretchr/testify/require"
@@ -27,7 +28,7 @@ func TestIsRemote(t *testing.T) {
2728
for _, tt := range testCases {
2829
t.Run(tt.name, func(t *testing.T) {
2930
require := require.New(t)
30-
val, err := f.Eval(tt.row)
31+
val, err := f.Eval(sql.NewBaseSession(context.TODO()), tt.row)
3132
if tt.err {
3233
require.Error(err)
3334
require.True(sql.ErrInvalidType.Is(err))

internal/function/is_tag.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,9 @@ func NewIsTag(e sql.Expression) sql.Expression {
1818
return &IsTag{expression.UnaryExpression{Child: e}}
1919
}
2020

21-
var _ sql.Expression = (*IsTag)(nil)
22-
2321
// Eval implements the expression interface.
24-
func (f *IsTag) Eval(row sql.Row) (interface{}, error) {
25-
val, err := f.Child.Eval(row)
22+
func (f *IsTag) Eval(session sql.Session, row sql.Row) (interface{}, error) {
23+
val, err := f.Child.Eval(session, row)
2624
if err != nil {
2725
return nil, err
2826
}
@@ -45,8 +43,12 @@ func (IsTag) Name() string {
4543
}
4644

4745
// TransformUp implements the Expression interface.
48-
func (f IsTag) TransformUp(fn func(sql.Expression) sql.Expression) sql.Expression {
49-
return NewIsTag(fn(f.Child))
46+
func (f IsTag) TransformUp(fn func(sql.Expression) (sql.Expression, error)) (sql.Expression, error) {
47+
child, err := f.Child.TransformUp(fn)
48+
if err != nil {
49+
return nil, err
50+
}
51+
return fn(NewIsTag(child))
5052
}
5153

5254
// Type implements the Expression interface.

internal/function/is_tag_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package function
22

33
import (
4+
"context"
45
"testing"
56

67
"github.com/stretchr/testify/require"
@@ -27,7 +28,7 @@ func TestIsTag(t *testing.T) {
2728
for _, tt := range testCases {
2829
t.Run(tt.name, func(t *testing.T) {
2930
require := require.New(t)
30-
val, err := f.Eval(tt.row)
31+
val, err := f.Eval(sql.NewBaseSession(context.TODO()), tt.row)
3132
if tt.err {
3233
require.Error(err)
3334
require.True(sql.ErrInvalidType.Is(err))

references.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,15 @@ func (referencesTable) Schema() sql.Schema {
3131
}
3232
}
3333

34-
func (r *referencesTable) TransformUp(f func(sql.Node) sql.Node) sql.Node {
34+
func (r *referencesTable) TransformUp(f func(sql.Node) (sql.Node, error)) (sql.Node, error) {
3535
return f(r)
3636
}
3737

38-
func (r *referencesTable) TransformExpressionsUp(f func(sql.Expression) sql.Expression) sql.Node {
39-
return r
38+
func (r *referencesTable) TransformExpressionsUp(f func(sql.Expression) (sql.Expression, error)) (sql.Node, error) {
39+
return r, nil
4040
}
4141

42-
func (r referencesTable) RowIter() (sql.RowIter, error) {
42+
func (r referencesTable) RowIter(_ sql.Session) (sql.RowIter, error) {
4343
iter := &referenceIter{}
4444

4545
repoIter, err := NewRowRepoIter(r.pool, iter)

0 commit comments

Comments
 (0)