Update prefix db use
This commit is contained in:
		
							parent
							
								
									3d8b228c0a
								
							
						
					
					
						commit
						97740fd728
					
				@ -4,6 +4,7 @@ import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"context"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"math"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"testing"
 | 
			
		||||
	"time"
 | 
			
		||||
@ -18,7 +19,7 @@ import (
 | 
			
		||||
	storedb "git.grassecon.net/grassrootseconomics/sarafu-vise/store/db"
 | 
			
		||||
	"git.grassecon.net/grassrootseconomics/sarafu-api/models"
 | 
			
		||||
	"git.grassecon.net/grassrootseconomics/sarafu-vise-events/lookup"
 | 
			
		||||
	"git.grassecon.net/grassrootseconomics/sarafu-vise-events/event"
 | 
			
		||||
//	"git.grassecon.net/grassrootseconomics/sarafu-vise-events/event"
 | 
			
		||||
	"git.grassecon.net/grassrootseconomics/common/hex"
 | 
			
		||||
	"git.grassecon.net/grassrootseconomics/sarafu-vise-events/internal/testutil"
 | 
			
		||||
)
 | 
			
		||||
@ -182,7 +183,10 @@ func TestHandleMsg(t *testing.T) {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	if !bytes.Equal(v, []byte(strconv.Itoa(tokenBalance))) {
 | 
			
		||||
	fmts := fmt.Sprintf("%%1.%df", tokenDecimals)
 | 
			
		||||
	expect := fmt.Sprintf(fmts, float64(tokenBalance) / math.Pow(10, tokenDecimals))
 | 
			
		||||
	//if !bytes.Equal(v, []byte(strconv.Itoa(tokenBalance))) {
 | 
			
		||||
	if !bytes.Equal(v, []byte(expect)) {
 | 
			
		||||
		t.Fatalf("expected '%d', got %s", tokenBalance, v)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -194,14 +198,14 @@ func TestHandleMsg(t *testing.T) {
 | 
			
		||||
		t.Fatal("no transaction data")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	userDb.SetPrefix(event.DATATYPE_USERSUB)
 | 
			
		||||
	userDb.SetSession(testutil.AliceSession)
 | 
			
		||||
	k := append([]byte("vouchers"), []byte("sym")...)
 | 
			
		||||
	v, err = userDb.Get(ctx, k)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	if !bytes.Contains(v, []byte(fmt.Sprintf("1:%s", tokenSymbol))) {
 | 
			
		||||
		t.Fatalf("expected '1:%s', got %s", tokenSymbol, v)
 | 
			
		||||
	}
 | 
			
		||||
//	userDb.SetPrefix(event.DATATYPE_USERSUB)
 | 
			
		||||
//	userDb.SetSession(testutil.AliceSession)
 | 
			
		||||
//	k := append([]byte("vouchers"), []byte("sym")...)
 | 
			
		||||
//	v, err = userDb.Get(ctx, k)
 | 
			
		||||
//	if err != nil {
 | 
			
		||||
//		t.Fatal(err)
 | 
			
		||||
//	}
 | 
			
		||||
//	if !bytes.Contains(v, []byte(fmt.Sprintf("1:%s", tokenSymbol))) {
 | 
			
		||||
//		t.Fatalf("expected '1:%s', got %s", tokenSymbol, v)
 | 
			
		||||
//	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -75,29 +75,38 @@ func updateTokenList(ctx context.Context, userStore *store.UserDataStore, identi
 | 
			
		||||
 | 
			
		||||
	// TODO: make sure subprefixdb is thread safe when using gdbm
 | 
			
		||||
	// TODO: why is address session here unless explicitly set
 | 
			
		||||
	userStore.Db.SetSession(identity.SessionId)
 | 
			
		||||
	userStore.Db.SetPrefix(DATATYPE_USERSUB)
 | 
			
		||||
	//userStore.Db.SetPrefix(DATATYPE_USERSUB)
 | 
			
		||||
	pfxDb := toPrefixDb(userStore, identity.SessionId)
 | 
			
		||||
 | 
			
		||||
	k := append([]byte("vouchers"), []byte("sym")...)
 | 
			
		||||
	err = userStore.Db.Put(ctx, k, []byte(metadata.Symbols))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	logg.TraceCtxf(ctx, "processvoucher", "key", k)
 | 
			
		||||
	k = append([]byte("vouchers"), []byte("bal")...)
 | 
			
		||||
	err = userStore.Db.Put(ctx, k, []byte(metadata.Balances))
 | 
			
		||||
	//k := append([]byte("vouchers"), []byte("sym")...)
 | 
			
		||||
	//err = userStore.Db.Put(ctx, k, []byte(metadata.Symbols))
 | 
			
		||||
	typ := storedb.ToBytes(storedb.DATA_VOUCHER_SYMBOLS)
 | 
			
		||||
	err = pfxDb.Put(ctx, typ, []byte(metadata.Symbols))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	k = append([]byte("vouchers"), []byte("deci")...)
 | 
			
		||||
	err = userStore.Db.Put(ctx, k, []byte(metadata.Decimals))
 | 
			
		||||
 | 
			
		||||
	//k = append([]byte("vouchers"), []byte("bal")...)
 | 
			
		||||
	//err = userStore.Db.Put(ctx, k, []byte(metadata.Balances))
 | 
			
		||||
	typ = storedb.ToBytes(storedb.DATA_VOUCHER_BALANCES)
 | 
			
		||||
	err = pfxDb.Put(ctx, typ, []byte(metadata.Balances))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	k = append([]byte("vouchers"), []byte("addr")...)
 | 
			
		||||
	err = userStore.Db.Put(ctx, k, []byte(metadata.Addresses))
 | 
			
		||||
	//k = append([]byte("vouchers"), []byte("deci")...)
 | 
			
		||||
	//err = userStore.Db.Put(ctx, k, []byte(metadata.Decimals))
 | 
			
		||||
	typ = storedb.ToBytes(storedb.DATA_VOUCHER_DECIMALS)
 | 
			
		||||
	err = pfxDb.Put(ctx, typ, []byte(metadata.Decimals))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//k = append([]byte("vouchers"), []byte("addr")...)
 | 
			
		||||
	//err = userStore.Db.Put(ctx, k, []byte(metadata.Addresses))
 | 
			
		||||
	typ = storedb.ToBytes(storedb.DATA_VOUCHER_ADDRESSES)
 | 
			
		||||
	err = pfxDb.Put(ctx, typ, []byte(metadata.Addresses))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
@ -107,7 +116,8 @@ func updateTokenList(ctx context.Context, userStore *store.UserDataStore, identi
 | 
			
		||||
 | 
			
		||||
// set default token to given symbol.
 | 
			
		||||
func updateDefaultToken(ctx context.Context, userStore *store.UserDataStore, identity lookup.Identity, activeSym string) error {
 | 
			
		||||
	pfxDb := store.StoreToPrefixDb(userStore, []byte("vouchers"))
 | 
			
		||||
	//pfxDb := store.StoreToPrefixDb(userStore, []byte("vouchers"))
 | 
			
		||||
	pfxDb := toPrefixDb(userStore, identity.SessionId)
 | 
			
		||||
	// TODO: the activeSym input should instead be newline separated list?
 | 
			
		||||
	tokenData, err := store.GetVoucherData(ctx, pfxDb, activeSym)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@ -151,7 +161,6 @@ func updateToken(ctx context.Context, userStore *store.UserDataStore, identity l
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	logg.Debugf("barfoo")
 | 
			
		||||
 | 
			
		||||
	err = updateDefaultToken(ctx, userStore, identity, string(activeSym))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@ -255,3 +264,9 @@ func handleTokenMint(ctx context.Context, userStore *store.UserDataStore, ev *ev
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func toPrefixDb(userStore *store.UserDataStore, sessionId string) storedb.PrefixDb {
 | 
			
		||||
	userStore.Db.SetSession(sessionId)
 | 
			
		||||
	prefix := storedb.ToBytes(db.DATATYPE_USERDATA)
 | 
			
		||||
	return store.StoreToPrefixDb(userStore, prefix)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,7 @@ import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"context"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"math"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"testing"
 | 
			
		||||
	"time"
 | 
			
		||||
@ -12,6 +13,7 @@ import (
 | 
			
		||||
	"git.defalsify.org/vise.git/db"
 | 
			
		||||
	memdb "git.defalsify.org/vise.git/db/mem"
 | 
			
		||||
	"git.grassecon.net/grassrootseconomics/sarafu-vise-events/config"
 | 
			
		||||
	"git.grassecon.net/grassrootseconomics/sarafu-vise/handlers/application"
 | 
			
		||||
	"git.grassecon.net/grassrootseconomics/sarafu-api/models"
 | 
			
		||||
	"git.grassecon.net/grassrootseconomics/sarafu-vise/store"
 | 
			
		||||
	storedb "git.grassecon.net/grassrootseconomics/sarafu-vise/store/db"
 | 
			
		||||
@ -114,8 +116,11 @@ func TestTokenTransfer(t *testing.T) {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	if !bytes.Equal(v, []byte(strconv.Itoa(tokenBalance))) {
 | 
			
		||||
		t.Fatalf("expected '%d', got %s", tokenBalance, v)
 | 
			
		||||
	//if !bytes.Equal(v, []byte(strconv.Itoa(tokenBalance))) {
 | 
			
		||||
	fmts := fmt.Sprintf("%%1.%df", tokenDecimals)
 | 
			
		||||
	expect := fmt.Sprintf(fmts, float64(tokenBalance) / math.Pow(10, tokenDecimals))
 | 
			
		||||
	if !bytes.Equal(v, []byte(expect)) {
 | 
			
		||||
		t.Fatalf("expected '%s', got %s", expect, v)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	v, err = userStore.ReadEntry(ctx, testutil.AliceSession, storedb.DATA_TRANSACTIONS)
 | 
			
		||||
@ -126,16 +131,22 @@ func TestTokenTransfer(t *testing.T) {
 | 
			
		||||
		t.Fatal("no transaction data")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	userDb.SetPrefix(DATATYPE_USERSUB)
 | 
			
		||||
	userDb.SetSession(testutil.AliceSession)
 | 
			
		||||
	k := append([]byte("vouchers"), []byte("sym")...)
 | 
			
		||||
	v, err = userDb.Get(ctx, k)
 | 
			
		||||
	mh, err := application.NewMenuHandlers(nil, userStore, nil, nil, nil)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	if !bytes.Contains(v, []byte(fmt.Sprintf("1:%s", tokenSymbol))) {
 | 
			
		||||
		t.Fatalf("expected '1:%s', got %s", tokenSymbol, v)
 | 
			
		||||
	}
 | 
			
		||||
	_ = mh
 | 
			
		||||
 | 
			
		||||
//	userDb.SetPrefix(DATATYPE_USERSUB)
 | 
			
		||||
//	userDb.SetSession(testutil.AliceSession)
 | 
			
		||||
//	k := append([]byte("vouchers"), []byte("sym")...)
 | 
			
		||||
//	v, err = userDb.Get(ctx, k)
 | 
			
		||||
//	if err != nil {
 | 
			
		||||
//		t.Fatal(err)
 | 
			
		||||
//	}
 | 
			
		||||
//	if !bytes.Contains(v, []byte(fmt.Sprintf("1:%s", tokenSymbol))) {
 | 
			
		||||
//		t.Fatalf("expected '1:%s', got %s", tokenSymbol, v)
 | 
			
		||||
//	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestTokenMint(t *testing.T) {
 | 
			
		||||
@ -217,7 +228,10 @@ func TestTokenMint(t *testing.T) {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	if !bytes.Equal(v, []byte(strconv.Itoa(tokenBalance))) {
 | 
			
		||||
	fmts := fmt.Sprintf("%%1.%df", tokenDecimals)
 | 
			
		||||
	expect := fmt.Sprintf(fmts, float64(tokenBalance) / math.Pow(10, tokenDecimals))
 | 
			
		||||
	//if !bytes.Equal(v, []byte(strconv.Itoa(tokenBalance))) {
 | 
			
		||||
	if !bytes.Equal(v, []byte(expect)) {
 | 
			
		||||
		t.Fatalf("expected '%d', got %s", tokenBalance, v)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -229,14 +243,14 @@ func TestTokenMint(t *testing.T) {
 | 
			
		||||
		t.Fatal("no transaction data")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	userDb.SetPrefix(DATATYPE_USERSUB)
 | 
			
		||||
	userDb.SetSession(testutil.AliceSession)
 | 
			
		||||
	k := append([]byte("vouchers"), []byte("sym")...)
 | 
			
		||||
	v, err = userDb.Get(ctx, k)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	if !bytes.Contains(v, []byte(fmt.Sprintf("1:%s", tokenSymbol))) {
 | 
			
		||||
		t.Fatalf("expected '1:%s', got %s", tokenSymbol, v)
 | 
			
		||||
	}
 | 
			
		||||
//	userDb.SetPrefix(DATATYPE_USERSUB)
 | 
			
		||||
//	userDb.SetSession(testutil.AliceSession)
 | 
			
		||||
//	k := append([]byte("vouchers"), []byte("sym")...)
 | 
			
		||||
//	v, err = userDb.Get(ctx, k)
 | 
			
		||||
//	if err != nil {
 | 
			
		||||
//		t.Fatal(err)
 | 
			
		||||
//	}
 | 
			
		||||
//	if !bytes.Contains(v, []byte(fmt.Sprintf("1:%s", tokenSymbol))) {
 | 
			
		||||
//		t.Fatalf("expected '1:%s', got %s", tokenSymbol, v)
 | 
			
		||||
//	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user