commit e2d329b3f739ce7dbb1957b015f1a64e70ea8784
parent 3b5fc85b650b75272d0410d4e35ed94c6de85e14
Author: lash <dev@holbrook.no>
Date: Wed, 15 Jan 2025 00:05:35 +0000
Finish fs dump with and without session id
Diffstat:
4 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/db/db.go b/db/db.go
@@ -164,7 +164,11 @@ func(bd *DbBase) SetLanguage(ln *lang.Language) {
}
// SetSession implements the Db interface.
func(bd *DbBase) SetSession(sessionId string) {
- bd.baseDb.sid = append([]byte(sessionId), 0x2E)
+ if sessionId == "" {
+ bd.baseDb.sid = []byte{}
+ } else {
+ bd.baseDb.sid = append([]byte(sessionId), 0x2E)
+ }
}
// SetLock implements the Db interface.
diff --git a/db/fs/dump.go b/db/fs/dump.go
@@ -32,13 +32,11 @@ func(fdb *fsDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
if err != nil {
return nil, err
}
- kk = append([]byte{k[0]}, kk...)
return db.NewDumper(fdb.dumpFunc).WithFirst(kk, vv), nil
}
}
for len(fdb.elements) > 0 {
v := fdb.elements[0]
- logg.TraceCtxf(ctx, "el", "v", v)
fdb.elements = fdb.elements[1:]
s := v.Name()
k := []byte(s)
@@ -48,7 +46,7 @@ func(fdb *fsDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
k[0] -= 0x30
kk, err := fdb.DecodeKey(ctx, k)
if err != nil {
- return nil, err
+ continue
}
kkk := append([]byte{k[0]}, kk...)
if bytes.HasPrefix(kkk, key) {
@@ -56,7 +54,6 @@ func(fdb *fsDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
if err != nil {
return nil, err
}
- kk = append([]byte{k[0]}, kk...)
return db.NewDumper(fdb.dumpFunc).WithFirst(kk, vv), nil
}
}
@@ -82,7 +79,7 @@ func(fdb *fsDb) dumpFunc(ctx context.Context) ([]byte, []byte) {
if err != nil {
return nil, nil
}
- return kkk, vv
+ return kk, vv
}
return nil, nil
}
diff --git a/db/fs/dump_test.go b/db/fs/dump_test.go
@@ -45,14 +45,14 @@ func TestDumpFs(t *testing.T) {
t.Fatal(err)
}
k, v := o.Next(ctx)
- if !bytes.Equal(k, append([]byte{db.DATATYPE_USERDATA}, []byte("foobar")...)) {
+ if !bytes.Equal(k, []byte("foobar")) {
t.Fatalf("expected key 'foobar', got %s", k)
}
if !bytes.Equal(v, []byte("pinky")) {
t.Fatalf("expected val 'pinky', got %s", v)
}
k, v = o.Next(ctx)
- if !bytes.Equal(k, append([]byte{db.DATATYPE_USERDATA}, []byte("foobarbaz")...)) {
+ if !bytes.Equal(k, []byte("foobarbaz")) {
t.Fatalf("expected key 'foobarbaz', got %s", k)
}
if !bytes.Equal(v, []byte("blinky")) {
@@ -96,14 +96,14 @@ func TestDumpBinary(t *testing.T) {
t.Fatal(err)
}
k, v := o.Next(ctx)
- if !bytes.Equal(k, append([]byte{db.DATATYPE_USERDATA}, []byte{0x01, 0x02, 0x03}...)) {
+ if !bytes.Equal(k, []byte{0x01, 0x02, 0x03}) {
t.Fatalf("expected key '0x010203', got %x", k)
}
if !bytes.Equal(v, []byte("inky")) {
t.Fatalf("expected val 'inky', got %s", v)
}
k, v = o.Next(ctx)
- if !bytes.Equal(k, append([]byte{db.DATATYPE_USERDATA}, []byte{0x01, 0x02, 0x04}...)) {
+ if !bytes.Equal(k, []byte{0x01, 0x02, 0x04}) {
t.Fatalf("expected key '0x010204', got %x", k)
}
if !bytes.Equal(v, []byte("pinky")) {
@@ -148,14 +148,14 @@ func TestDumpSessionBinary(t *testing.T) {
t.Fatal(err)
}
k, v := o.Next(ctx)
- if !bytes.Equal(k, append([]byte{db.DATATYPE_USERDATA}, []byte{0x01, 0x02, 0x03}...)) {
+ if !bytes.Equal(k, []byte{0x01, 0x02, 0x03}) {
t.Fatalf("expected key '0x010203', got %x", k)
}
if !bytes.Equal(v, []byte("inky")) {
t.Fatalf("expected val 'inky', got %s", v)
}
k, v = o.Next(ctx)
- if !bytes.Equal(k, append([]byte{db.DATATYPE_USERDATA}, []byte{0x01, 0x02, 0x04}...)) {
+ if !bytes.Equal(k, []byte{0x01, 0x02, 0x04}) {
t.Fatalf("expected key '0x010204', got %x", k)
}
if !bytes.Equal(v, []byte("pinky")) {
diff --git a/db/fs/fs.go b/db/fs/fs.go
@@ -4,6 +4,7 @@ import (
"context"
"errors"
"encoding/base64"
+ "fmt"
"io/fs"
"io/ioutil"
"os"
@@ -86,7 +87,7 @@ func(fdb *fsDb) DecodeKey(ctx context.Context, key []byte) ([]byte, error) {
oldKey := key
key, err = base64.StdEncoding.DecodeString(string(key))
if err != nil {
- return []byte{}, err
+ return []byte{}, fmt.Errorf("base64 decode error '%s': %v", oldKey, err)
}
logg.TraceCtxf(ctx, "decoding base64 key", "base64", oldKey, "bin", key)
return key, nil