graviton icon indicating copy to clipboard operation
graviton copied to clipboard

Unable to print the right order

Open gcclinux opened this issue 2 years ago • 0 comments

`package pkg

import ( "fmt" "strconv" "time"

"github.com/deroproject/graviton"

)

func RunGraviton() {

store, _ := graviton.NewDiskStore("db/graviton.db")
ss, _ := store.LoadSnapshot(0)
root, _ := ss.GetTree("root")

// Create a list of date and store in database

today := time.Now()
keys := 0
for x := 0; x < 10; x++ {
	date := today.AddDate(0, 0, x)
	save := fmt.Sprintf("%02d-%02d-%04d", date.Day(), date.Month(), date.Year())
	root.Put([]byte(strconv.Itoa(keys)), []byte(save))
	keys++
}
graviton.Commit(root)

// Get first value stored in database
first := root.Cursor()
k, v, _ := first.First()
fmt.Printf("FIRST: key=%s, value=%s\n", k, v)

// Get last value stored in database
last := root.Cursor()
for k, v, err := last.Last(); err == nil; k, v, err = last.Next() {
	fmt.Printf("LAST : key=%s, value=%s\n", k, v)
}

// Get individual value based on key = "2" example
var key string = "2"
value, _ := root.Get([]byte(key))
fmt.Printf("SELECT: key=%s, value=%s\n", key, string(value))

fmt.Println()
fmt.Println("LAST 5:")
// Get last 5 values stored in database
five := root.Cursor()
count := 5
for k, v, err := five.Last(); err == nil && count != 0; k, v, err = five.Prev() {
	fmt.Printf("LAST: key=%s, value=%s\n", k, v)
	count--
}
fmt.Println()

// Get all values stored in database
a := root.Cursor()
fmt.Println("ALL:")
for k, v, err := a.First(); err == nil; k, v, err = a.Next() {
	fmt.Printf("key=%s, value=%s\n", k, v)
}

fmt.Println()

// Count len of db entries..
c := root.Cursor()
lenght := 0

for _, _, err := c.First(); err == nil; _, _, err = c.Next() {
	lenght++
}

fmt.Printf("Len or total records: %d\n", lenght)

} `

Result:

`$ go run main.go

GRAVITON TEST FIRST: key=1, value=02-02-2023 LAST : key=7, value=08-02-2023 SELECT: key=2, value=03-02-2023

LAST 5: LAST: key=7, value=08-02-2023 LAST: key=2, value=03-02-2023 LAST: key=8, value=09-02-2023 LAST: key=9, value=10-02-2023 LAST: key=4, value=05-02-2023

ALL: key=1, value=02-02-2023 key=0, value=01-02-2023 key=3, value=04-02-2023 key=5, value=06-02-2023 key=6, value=07-02-2023 key=4, value=05-02-2023 key=9, value=10-02-2023 key=8, value=09-02-2023 key=2, value=03-02-2023 key=7, value=08-02-2023

Len or total records: 10 `

Can you help fix this, LAST 5 is incorrect, ALL is not in order, FIRST key also is not the first one.

I really appreciate any help.

gcclinux avatar Feb 01 '23 20:02 gcclinux