diff --git a/common/db.go b/common/db.go index 80757e9..b8fdb51 100644 --- a/common/db.go +++ b/common/db.go @@ -82,15 +82,8 @@ func StringToDataTyp(str string) (DataTyp, error) { } } -// Convert DataTyp to []byte -func (d DataTyp) ToBytes() []byte { - bytes := make([]byte, 2) - binary.BigEndian.PutUint16(bytes, uint16(d)) - return bytes -} - -// Convert int to []byte -func IntToBytes(value int) []byte { +// ToBytes converts DataTyp or int to a byte slice +func ToBytes[T ~uint16 | int](value T) []byte { bytes := make([]byte, 2) binary.BigEndian.PutUint16(bytes, uint16(value)) return bytes diff --git a/common/transfer_statements.go b/common/transfer_statements.go index dd8324a..8567557 100644 --- a/common/transfer_statements.go +++ b/common/transfer_statements.go @@ -61,9 +61,9 @@ func GetTransferData(ctx context.Context, db storage.PrefixDb, publicKey string, data := make(map[DataTyp]string) for _, key := range keys { - value, err := db.Get(ctx, key.ToBytes()) + value, err := db.Get(ctx, ToBytes(key)) if err != nil { - return "", fmt.Errorf("failed to get %s: %v", key.ToBytes(), err) + return "", fmt.Errorf("failed to get %s: %v", ToBytes(key), err) } data[key] = string(value) } diff --git a/common/vouchers.go b/common/vouchers.go index ab0e099..6cff91d 100644 --- a/common/vouchers.go +++ b/common/vouchers.go @@ -68,9 +68,9 @@ func GetVoucherData(ctx context.Context, db storage.PrefixDb, input string) (*da data := make(map[DataTyp]string) for _, key := range keys { - value, err := db.Get(ctx, key.ToBytes()) + value, err := db.Get(ctx, ToBytes(key)) if err != nil { - return nil, fmt.Errorf("failed to get %s: %v", key.ToBytes(), err) + return nil, fmt.Errorf("failed to get %s: %v", ToBytes(key), err) } data[key] = string(value) } diff --git a/common/vouchers_test.go b/common/vouchers_test.go index 560fb5b..ba6cd60 100644 --- a/common/vouchers_test.go +++ b/common/vouchers_test.go @@ -85,7 +85,7 @@ func TestGetVoucherData(t *testing.T) { t.Fatal(err) } - prefix := IntToBytes(visedb.DATATYPE_USERDATA) + prefix := ToBytes(visedb.DATATYPE_USERDATA) spdb := storage.NewSubPrefixDb(db, prefix) // Test voucher data @@ -98,7 +98,7 @@ func TestGetVoucherData(t *testing.T) { // Put the data for key, value := range mockData { - err = spdb.Put(ctx, []byte(key.ToBytes()), []byte(value)) + err = spdb.Put(ctx, []byte(ToBytes(key)), []byte(value)) if err != nil { t.Fatal(err) } diff --git a/internal/handlers/ussd/menuhandler.go b/internal/handlers/ussd/menuhandler.go index 812c897..c860771 100644 --- a/internal/handlers/ussd/menuhandler.go +++ b/internal/handlers/ussd/menuhandler.go @@ -87,7 +87,7 @@ func NewHandlers(appFlags *asm.FlagParser, userdataStore db.Db, adminstore *util } // Instantiate the SubPrefixDb with "DATATYPE_USERDATA" prefix - prefix := common.IntToBytes(db.DATATYPE_USERDATA) + prefix := common.ToBytes(db.DATATYPE_USERDATA) prefixDb := storage.NewSubPrefixDb(userdataStore, prefix) h := &Handlers{ @@ -1586,7 +1586,7 @@ func (h *Handlers) CheckVouchers(ctx context.Context, sym string, input []byte) } for key, value := range dataMap { - if err := h.prefixDb.Put(ctx, []byte(key.ToBytes()), []byte(value)); err != nil { + if err := h.prefixDb.Put(ctx, []byte(common.ToBytes(key)), []byte(value)); err != nil { return res, nil } } @@ -1599,7 +1599,7 @@ func (h *Handlers) GetVoucherList(ctx context.Context, sym string, input []byte) var res resource.Result // Read vouchers from the store - voucherData, err := h.prefixDb.Get(ctx, common.DATA_VOUCHER_SYMBOLS.ToBytes()) + voucherData, err := h.prefixDb.Get(ctx, common.ToBytes(common.DATA_VOUCHER_SYMBOLS)) if err != nil { logg.ErrorCtxf(ctx, "Failed to read the voucherData from prefixDb", "error", err) return res, err @@ -1757,7 +1757,7 @@ func (h *Handlers) CheckTransactions(ctx context.Context, sym string, input []by } for key, value := range dataMap { - if err := h.prefixDb.Put(ctx, []byte(key.ToBytes()), []byte(value)); err != nil { + if err := h.prefixDb.Put(ctx, []byte(common.ToBytes(key)), []byte(value)); err != nil { logg.ErrorCtxf(ctx, "failed to write to prefixDb", "error", err) return res, err } @@ -1783,22 +1783,22 @@ func (h *Handlers) GetTransactionsList(ctx context.Context, sym string, input [] } // Read transactions from the store and format them - TransactionSenders, err := h.prefixDb.Get(ctx, common.DATA_PREFIX_TX_SENDERS.ToBytes()) + TransactionSenders, err := h.prefixDb.Get(ctx, common.ToBytes(common.DATA_PREFIX_TX_SENDERS)) if err != nil { logg.ErrorCtxf(ctx, "Failed to read the TransactionSenders from prefixDb", "error", err) return res, err } - TransactionSyms, err := h.prefixDb.Get(ctx, common.DATA_PREFIX_TX_SYMBOLS.ToBytes()) + TransactionSyms, err := h.prefixDb.Get(ctx, common.ToBytes(common.DATA_PREFIX_TX_SYMBOLS)) if err != nil { logg.ErrorCtxf(ctx, "Failed to read the TransactionSyms from prefixDb", "error", err) return res, err } - TransactionValues, err := h.prefixDb.Get(ctx, common.DATA_PREFIX_TX_VALUES.ToBytes()) + TransactionValues, err := h.prefixDb.Get(ctx, common.ToBytes(common.DATA_PREFIX_TX_VALUES)) if err != nil { logg.ErrorCtxf(ctx, "Failed to read the TransactionValues from prefixDb", "error", err) return res, err } - TransactionDates, err := h.prefixDb.Get(ctx, common.DATA_PREFIX_TX_DATES.ToBytes()) + TransactionDates, err := h.prefixDb.Get(ctx, common.ToBytes(common.DATA_PREFIX_TX_DATES)) if err != nil { logg.ErrorCtxf(ctx, "Failed to read the TransactionDates from prefixDb", "error", err) return res, err diff --git a/internal/handlers/ussd/menuhandler_test.go b/internal/handlers/ussd/menuhandler_test.go index 1aa7c28..fac95a1 100644 --- a/internal/handlers/ussd/menuhandler_test.go +++ b/internal/handlers/ussd/menuhandler_test.go @@ -57,7 +57,7 @@ func InitializeTestSubPrefixDb(t *testing.T, ctx context.Context) *storage.SubPr if err != nil { t.Fatal(err) } - prefix := common.IntToBytes(visedb.DATATYPE_USERDATA) + prefix := common.ToBytes(visedb.DATATYPE_USERDATA) spdb := storage.NewSubPrefixDb(db, prefix) return spdb @@ -1939,7 +1939,7 @@ func TestCheckVouchers(t *testing.T) { assert.NoError(t, err) // Read voucher sym data from the store - voucherData, err := spdb.Get(ctx, common.DATA_VOUCHER_SYMBOLS.ToBytes()) + voucherData, err := spdb.Get(ctx, common.ToBytes(common.DATA_VOUCHER_SYMBOLS)) if err != nil { t.Fatal(err) } @@ -1963,7 +1963,7 @@ func TestGetVoucherList(t *testing.T) { expectedSym := []byte("1:SRF\n2:MILO") // Put voucher sym data from the store - err := spdb.Put(ctx, common.DATA_VOUCHER_SYMBOLS.ToBytes(), expectedSym) + err := spdb.Put(ctx, common.ToBytes(common.DATA_VOUCHER_SYMBOLS), expectedSym) if err != nil { t.Fatal(err) } @@ -2002,7 +2002,7 @@ func TestViewVoucher(t *testing.T) { // Put the data for key, value := range mockData { - err = spdb.Put(ctx, []byte(key.ToBytes()), []byte(value)) + err = spdb.Put(ctx, []byte(common.ToBytes(key)), []byte(value)) if err != nil { t.Fatal(err) }