Skip to content
This repository has been archived by the owner on Jun 15, 2022. It is now read-only.

Commit

Permalink
Add Keys function
Browse files Browse the repository at this point in the history
Keys() method added for listing stored keys in database. Usage added in README and pkg/main.go.

Signed-off-by: Gökhan Özeloğlu <gozeloglu@gmail.com>
  • Loading branch information
gozeloglu committed Oct 29, 2021
1 parent adaf5b9 commit 92a7b23
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 1 deletion.
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,12 @@ func main() {
log.Fatalf(err.Error())
}
fmt.Printf("key name changed: %v1\n", ok)


keys := db.Keys()
for _, k := range keys {
fmt.Println(k)
}

err = db.Close() // Call while closing the database.
if err != nil {
log.Fatalf(err.Error())
Expand Down
5 changes: 5 additions & 0 deletions example/pkg/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@ func main() {
}
fmt.Printf("key name changed: %v1\n", ok)

keys := db.Keys()
for _, k := range keys {
fmt.Println(k)
}

err = db.Close()
if err != nil {
log.Fatalf(err.Error())
Expand Down
14 changes: 14 additions & 0 deletions keys.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package kvs

// Keys list the stored keys in a slice. If db is empty, empty slice is returned.
func (k *Kvs) Keys() []string {
k.mu.Lock()
defer k.mu.Unlock()
var keys []string

for key := range k.kv {
keys = append(keys, key)
}

return keys
}
69 changes: 69 additions & 0 deletions keys_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package kvs

import (
"os"
"testing"
"time"
)

func TestKvs_Keys(t *testing.T) {
db, err := open(t.Name(), "", 2*time.Minute)
if err != nil {
t.Fatalf(err.Error())
}
t.Logf("db created.")

pairs := []string{"foo", "1", "bar", "2", "fizz", "3", "buzz", "4"}
for i := 0; i < len(pairs); i += 2 {
db.Set(pairs[i], pairs[i+1])
}
t.Logf("key-value pairs are set.")

keys := db.Keys()
if len(keys) != len(pairs)/2 {
t.Errorf("Fetched keys are wrong. pairs len is %d, "+
"fetched len is %d.", len(pairs)/2, len(keys))
}
for _, k := range keys {
t.Logf(k)
}

err = db.Close()
if err != nil {
t.Fatalf(err.Error())
}
t.Logf("db closed.")

err = os.RemoveAll(db.dir)
if err != nil {
t.Fatalf(err.Error())
}
t.Logf("temp db removed.")
}

func TestKvs_EmptyKeys(t *testing.T) {
db, err := open(t.Name(), "", 2*time.Minute)
if err != nil {
t.Fatalf(err.Error())
}
t.Logf("db created.")

keys := db.Keys()
if len(keys) != 0 {
t.Errorf("Fetched keys are wrong. pairs len is %d, "+
"fetched len is %d.", 0, len(keys))
}
t.Logf("Empty slice: %d", len(keys))

err = db.Close()
if err != nil {
t.Fatalf(err.Error())
}
t.Logf("db closed.")

err = os.RemoveAll(db.dir)
if err != nil {
t.Fatalf(err.Error())
}
t.Logf("temp db removed.")
}

0 comments on commit 92a7b23

Please sign in to comment.