added GetStableVoucherData

This commit is contained in:
Alfred Kamanda 2026-02-06 16:40:57 +03:00
parent eb25aca96d
commit ab8d1535c4
Signed by: Alfred-mk
GPG Key ID: E60B2165A97F4D41

View File

@ -120,6 +120,43 @@ func GetVoucherData(ctx context.Context, store DataStore, sessionId string, inpu
}, nil }, nil
} }
// GetStableVoucherData retrieves and matches stable voucher data
func GetStableVoucherData(ctx context.Context, store DataStore, sessionId string, input string) (*dataserviceapi.TokenHoldings, error) {
keys := []storedb.DataTyp{
storedb.DATA_STABLE_VOUCHER_SYMBOLS,
storedb.DATA_STABLE_VOUCHER_BALANCES,
storedb.DATA_STABLE_VOUCHER_DECIMALS,
storedb.DATA_STABLE_VOUCHER_ADDRESSES,
}
data := make(map[storedb.DataTyp]string)
for _, key := range keys {
value, err := store.ReadEntry(ctx, sessionId, key)
if err != nil {
return nil, fmt.Errorf("failed to get data key %x: %v", key, err)
}
data[key] = string(value)
}
symbol, balance, decimal, address := MatchVoucher(input,
data[storedb.DATA_STABLE_VOUCHER_SYMBOLS],
data[storedb.DATA_STABLE_VOUCHER_BALANCES],
data[storedb.DATA_STABLE_VOUCHER_DECIMALS],
data[storedb.DATA_STABLE_VOUCHER_ADDRESSES],
)
if symbol == "" {
return nil, nil
}
return &dataserviceapi.TokenHoldings{
TokenSymbol: string(symbol),
Balance: string(balance),
TokenDecimals: string(decimal),
TokenAddress: string(address),
}, nil
}
// MatchVoucher finds the matching voucher symbol, balance, decimals and contract address based on the input. // MatchVoucher finds the matching voucher symbol, balance, decimals and contract address based on the input.
func MatchVoucher(input, symbols, balances, decimals, addresses string) (symbol, balance, decimal, address string) { func MatchVoucher(input, symbols, balances, decimals, addresses string) (symbol, balance, decimal, address string) {
symList := strings.Split(symbols, "\n") symList := strings.Split(symbols, "\n")