Skip to content

Commit

Permalink
Merge pull request #3 from RTradeLtd/fix/query
Browse files Browse the repository at this point in the history
Fix Query System
  • Loading branch information
postables committed Jun 28, 2019
2 parents ba6a47d + 2899f1a commit 9f3aa26
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 14 deletions.
10 changes: 5 additions & 5 deletions datastore.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ func (d *Datastore) GetSize(key datastore.Key) (int, error) {
// https://github.com/ipfs/go-datastore/blob/aa9190c18f1576be98e974359fd08c64ca0b5a94/examples/fs.go#L96
// https://github.com/boltdb/bolt/issues/518#issuecomment-187211346
func (d *Datastore) Query(q query.Query) (query.Results, error) {
results := make(chan query.Result)
resBuilder := query.NewResultBuilder(q)
if err := d.db.View(func(tx *bbolt.Tx) error {
cursor := tx.Bucket(d.bucket).Cursor()
pref := []byte(q.Prefix)
Expand All @@ -104,7 +104,7 @@ func (d *Datastore) Query(q query.Query) (query.Results, error) {
}
// initiate a non-blocking channel send
select {
case results <- result:
case resBuilder.Output <- result:
default:
continue
}
Expand All @@ -113,9 +113,9 @@ func (d *Datastore) Query(q query.Query) (query.Results, error) {
}); err != nil {
return nil, err
}
r := query.ResultsWithChan(q, results)
r = query.NaiveQueryApply(q, r)
return r, nil
// close the result builder since we are done using it
resBuilder.Process.Close()
return resBuilder.Results(), nil
}

// Batch returns a basic batched bolt datastore wrapper
Expand Down
18 changes: 9 additions & 9 deletions datastore_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dsbbolt

import (
"fmt"
"testing"

"reflect"
Expand Down Expand Up @@ -62,18 +63,17 @@ func Test_Datastore(t *testing.T) {
t.Fatal("incorrect data size")
}

_, err = ds.Query(query.Query{Prefix: key.String()})
//rs, err := ds.Query(query.Query{Prefix: key.String()})
rs, err := ds.Query(query.Query{Prefix: key.String()})
if err != nil {
t.Fatal(err)
}
/* currently doesn't work
res, err := rs.Rest()
if err != nil {
t.Fatal(err)
}
fmt.Println(res)
*/
res, err := rs.Rest()
if err != nil {
t.Fatal(err)
}
for _, v := range res {
fmt.Printf("%+v\n", v)
}
if err := ds.Delete(key); err != nil {
t.Fatal(err)
}
Expand Down

0 comments on commit 9f3aa26

Please sign in to comment.