From c8159113f0c57de870d2256921c7aba4f9a3bf72 Mon Sep 17 00:00:00 2001 From: alfred-mk Date: Mon, 19 May 2025 02:29:47 +0300 Subject: [PATCH] updated the correct swap data keys and use the userstore instead of the prefixdb --- store/swap.go | 44 +++++++------------------- store/swap_test.go | 78 ++++++---------------------------------------- 2 files changed, 21 insertions(+), 101 deletions(-) diff --git a/store/swap.go b/store/swap.go index 49fb561..fc0a569 100644 --- a/store/swap.go +++ b/store/swap.go @@ -37,9 +37,9 @@ func ReadSwapData(ctx context.Context, store DataStore, sessionId string) (SwapD fieldToKey := map[string]storedb.DataTyp{ "PublicKey": storedb.DATA_PUBLIC_KEY, "ActivePoolAddress": storedb.DATA_ACTIVE_POOL_ADDRESS, - "ActiveSwapFromSym": storedb.DATA_ACTIVE_SWAP_FROM_SYM, - "ActiveSwapFromDecimal": storedb.DATA_ACTIVE_SWAP_FROM_DECIMAL, - "ActiveSwapFromAddress": storedb.DATA_ACTIVE_SWAP_FROM_ADDRESS, + "ActiveSwapFromSym": storedb.DATA_ACTIVE_SYM, + "ActiveSwapFromDecimal": storedb.DATA_ACTIVE_DECIMAL, + "ActiveSwapFromAddress": storedb.DATA_ACTIVE_ADDRESS, "ActiveSwapToSym": storedb.DATA_ACTIVE_SWAP_TO_SYM, "ActiveSwapToAddress": storedb.DATA_ACTIVE_SWAP_TO_ADDRESS, } @@ -66,10 +66,10 @@ func ReadSwapPreviewData(ctx context.Context, store DataStore, sessionId string) fieldToKey := map[string]storedb.DataTyp{ "PublicKey": storedb.DATA_PUBLIC_KEY, "ActiveSwapMaxAmount": storedb.DATA_ACTIVE_SWAP_MAX_AMOUNT, - "ActiveSwapFromDecimal": storedb.DATA_ACTIVE_SWAP_FROM_DECIMAL, + "ActiveSwapFromDecimal": storedb.DATA_ACTIVE_DECIMAL, "ActivePoolAddress": storedb.DATA_ACTIVE_POOL_ADDRESS, - "ActiveSwapFromAddress": storedb.DATA_ACTIVE_SWAP_FROM_ADDRESS, - "ActiveSwapFromSym": storedb.DATA_ACTIVE_SWAP_FROM_SYM, + "ActiveSwapFromAddress": storedb.DATA_ACTIVE_ADDRESS, + "ActiveSwapFromSym": storedb.DATA_ACTIVE_SYM, "ActiveSwapToAddress": storedb.DATA_ACTIVE_SWAP_TO_ADDRESS, "ActiveSwapToSym": storedb.DATA_ACTIVE_SWAP_TO_SYM, "ActiveSwapToDecimal": storedb.DATA_ACTIVE_SWAP_TO_DECIMAL, @@ -93,7 +93,7 @@ func ReadSwapPreviewData(ctx context.Context, store DataStore, sessionId string) } // GetSwapFromVoucherData retrieves and matches swap from voucher data -func GetSwapFromVoucherData(ctx context.Context, db storedb.PrefixDb, input string) (*dataserviceapi.TokenHoldings, error) { +func GetSwapFromVoucherData(ctx context.Context, store DataStore, sessionId string, input string) (*dataserviceapi.TokenHoldings, error) { keys := []storedb.DataTyp{ storedb.DATA_POOL_FROM_SYMBOLS, storedb.DATA_POOL_FROM_BALANCES, @@ -103,9 +103,9 @@ func GetSwapFromVoucherData(ctx context.Context, db storedb.PrefixDb, input stri data := make(map[storedb.DataTyp]string) for _, key := range keys { - value, err := db.Get(ctx, storedb.ToBytes(key)) + value, err := store.ReadEntry(ctx, sessionId, key) if err != nil { - return nil, fmt.Errorf("failed to get prefix key %x: %v", storedb.ToBytes(key), err) + return nil, fmt.Errorf("failed to get data key %x: %v", key, err) } data[key] = string(value) } @@ -129,28 +129,8 @@ func GetSwapFromVoucherData(ctx context.Context, db storedb.PrefixDb, input stri }, nil } -// UpdateSwapFromVoucherData updates the active swap to voucher data in the DataStore. -func UpdateSwapFromVoucherData(ctx context.Context, store DataStore, sessionId string, data *dataserviceapi.TokenHoldings) error { - logg.TraceCtxf(ctx, "dtal", "data", data) - // Active swap from voucher data entries - activeEntries := map[storedb.DataTyp][]byte{ - storedb.DATA_ACTIVE_SWAP_FROM_SYM: []byte(data.TokenSymbol), - storedb.DATA_ACTIVE_SWAP_FROM_DECIMAL: []byte(data.TokenDecimals), - storedb.DATA_ACTIVE_SWAP_FROM_ADDRESS: []byte(data.ContractAddress), - } - - // Write active data - for key, value := range activeEntries { - if err := store.WriteEntry(ctx, sessionId, key, value); err != nil { - return err - } - } - - return nil -} - // GetSwapToVoucherData retrieves and matches voucher data -func GetSwapToVoucherData(ctx context.Context, db storedb.PrefixDb, input string) (*dataserviceapi.TokenHoldings, error) { +func GetSwapToVoucherData(ctx context.Context, store DataStore, sessionId string, input string) (*dataserviceapi.TokenHoldings, error) { keys := []storedb.DataTyp{ storedb.DATA_POOL_TO_SYMBOLS, storedb.DATA_POOL_TO_BALANCES, @@ -160,9 +140,9 @@ func GetSwapToVoucherData(ctx context.Context, db storedb.PrefixDb, input string data := make(map[storedb.DataTyp]string) for _, key := range keys { - value, err := db.Get(ctx, storedb.ToBytes(key)) + value, err := store.ReadEntry(ctx, sessionId, key) if err != nil { - return nil, fmt.Errorf("failed to get prefix key %x: %v", storedb.ToBytes(key), err) + return nil, fmt.Errorf("failed to get data key %x: %v", key, err) } data[key] = string(value) } diff --git a/store/swap_test.go b/store/swap_test.go index ee96066..179eeee 100644 --- a/store/swap_test.go +++ b/store/swap_test.go @@ -1,15 +1,10 @@ package store import ( - "context" "testing" - visedb "git.defalsify.org/vise.git/db" - memdb "git.defalsify.org/vise.git/db/mem" storedb "git.grassecon.net/grassrootseconomics/sarafu-vise/store/db" "github.com/alecthomas/assert/v2" - dataserviceapi "github.com/grassrootseconomics/ussd-data-service/pkg/api" - "github.com/stretchr/testify/require" ) func TestReadSwapData(t *testing.T) { @@ -95,16 +90,8 @@ func TestReadSwapPreviewData(t *testing.T) { } func TestGetSwapFromVoucherData(t *testing.T) { - ctx := context.Background() - - db := memdb.NewMemDb() - err := db.Connect(ctx, "") - if err != nil { - t.Fatal(err) - } - - prefix := storedb.ToBytes(visedb.DATATYPE_USERDATA) - spdb := storedb.NewSubPrefixDb(db, prefix) + sessionId := "session123" + ctx, store := InitializeTestDb(t) // Test pool swap data mockData := map[storedb.DataTyp][]byte{ @@ -116,13 +103,12 @@ func TestGetSwapFromVoucherData(t *testing.T) { // Put the data for key, value := range mockData { - err = spdb.Put(ctx, []byte(storedb.ToBytes(key)), []byte(value)) - if err != nil { + if err := store.WriteEntry(ctx, sessionId, key, []byte(value)); err != nil { t.Fatal(err) } } - result, err := GetSwapFromVoucherData(ctx, spdb, "1") + result, err := GetSwapFromVoucherData(ctx, store, sessionId, "1") assert.NoError(t, err) assert.Equal(t, "AMANI", result.TokenSymbol) @@ -131,54 +117,9 @@ func TestGetSwapFromVoucherData(t *testing.T) { assert.Equal(t, "0xc7B78Ac9ACB9E025C8234621FC515bC58179dEAe", result.ContractAddress) } -func TestUpdateSwapFromVoucherData(t *testing.T) { - ctx, store := InitializeTestDb(t) - sessionId := "session123" - - // New swap from voucher data - newData := &dataserviceapi.TokenHoldings{ - TokenSymbol: "AMANI", - TokenDecimals: "6", - ContractAddress: "0xc7B78Ac9ACB9E025C8234621FC515bC58179dEAe", - } - - // Old temporary data - tempData := &dataserviceapi.TokenHoldings{ - TokenSymbol: "OLD", - TokenDecimals: "8", - ContractAddress: "0xold", - } - require.NoError(t, StoreTemporaryVoucher(ctx, store, sessionId, tempData)) - - // Execute update - err := UpdateSwapFromVoucherData(ctx, store, sessionId, newData) - require.NoError(t, err) - - // Verify active swap from data was stored correctly - activeEntries := map[storedb.DataTyp][]byte{ - storedb.DATA_ACTIVE_SWAP_FROM_SYM: []byte(newData.TokenSymbol), - storedb.DATA_ACTIVE_SWAP_FROM_DECIMAL: []byte(newData.TokenDecimals), - storedb.DATA_ACTIVE_SWAP_FROM_ADDRESS: []byte(newData.ContractAddress), - } - - for key, expectedValue := range activeEntries { - storedValue, err := store.ReadEntry(ctx, sessionId, key) - require.NoError(t, err) - require.Equal(t, expectedValue, storedValue, "Active swap from data mismatch for key %v", key) - } -} - func TestGetSwapToVoucherData(t *testing.T) { - ctx := context.Background() - - db := memdb.NewMemDb() - err := db.Connect(ctx, "") - if err != nil { - t.Fatal(err) - } - - prefix := storedb.ToBytes(visedb.DATATYPE_USERDATA) - spdb := storedb.NewSubPrefixDb(db, prefix) + sessionId := "session123" + ctx, store := InitializeTestDb(t) // Test pool swap data mockData := map[storedb.DataTyp][]byte{ @@ -190,17 +131,16 @@ func TestGetSwapToVoucherData(t *testing.T) { // Put the data for key, value := range mockData { - err = spdb.Put(ctx, []byte(storedb.ToBytes(key)), []byte(value)) - if err != nil { + if err := store.WriteEntry(ctx, sessionId, key, []byte(value)); err != nil { t.Fatal(err) } } - result, err := GetSwapToVoucherData(ctx, spdb, "1") + result, err := GetSwapToVoucherData(ctx, store, sessionId, "1") assert.NoError(t, err) assert.Equal(t, "cUSD", result.TokenSymbol) assert.Equal(t, "", result.Balance) assert.Equal(t, "6", result.TokenDecimals) assert.Equal(t, "0xc7B78Ac9ACB9E025C8234621", result.ContractAddress) -} \ No newline at end of file +}