ussd/common/db.go

91 lines
1.7 KiB
Go
Raw Permalink Normal View History

2024-10-30 02:28:55 +01:00
package common
2024-09-05 16:12:38 +02:00
import (
"encoding/binary"
"errors"
2024-11-03 15:34:26 +01:00
"git.defalsify.org/vise.git/logging"
2024-09-05 16:12:38 +02:00
)
type DataTyp uint16
const (
DATA_ACCOUNT DataTyp = iota
DATA_ACCOUNT_CREATED
DATA_TRACKING_ID
DATA_PUBLIC_KEY
DATA_CUSTODIAL_ID
2024-09-05 18:50:02 +02:00
DATA_ACCOUNT_PIN
2024-09-06 07:35:01 +02:00
DATA_ACCOUNT_STATUS
DATA_FIRST_NAME
DATA_FAMILY_NAME
DATA_YOB
DATA_LOCATION
DATA_GENDER
DATA_OFFERINGS
DATA_RECIPIENT
DATA_AMOUNT
DATA_TEMPORARY_VALUE
2024-10-09 14:38:19 +02:00
DATA_ACTIVE_SYM
2024-10-10 13:48:23 +02:00
DATA_ACTIVE_BAL
DATA_BLOCKED_NUMBER
2024-10-30 01:59:59 +01:00
DATA_PUBLIC_KEY_REVERSE
DATA_ACTIVE_DECIMAL
DATA_ACTIVE_ADDRESS
// Start the sub prefix data at 256 (0x0100)
DATA_VOUCHER_SYMBOLS DataTyp = 256 + iota
DATA_VOUCHER_BALANCES
DATA_VOUCHER_DECIMALS
DATA_VOUCHER_ADDRESSES
DATA_TX_SENDERS
DATA_TX_RECIPIENTS
DATA_TX_VALUES
DATA_TX_ADDRESSES
DATA_TX_HASHES
DATA_TX_DATES
DATA_TX_SYMBOLS
DATA_TX_DECIMALS
2024-09-05 16:12:38 +02:00
)
2024-11-03 15:34:26 +01:00
var (
logg = logging.NewVanilla().WithDomain("urdt-common")
)
2024-09-05 16:12:38 +02:00
func typToBytes(typ DataTyp) []byte {
var b [2]byte
binary.BigEndian.PutUint16(b[:], uint16(typ))
return b[:]
2024-09-05 16:12:38 +02:00
}
2024-09-07 15:25:29 +02:00
func PackKey(typ DataTyp, data []byte) []byte {
2024-09-05 16:12:38 +02:00
v := typToBytes(typ)
return append(v, data...)
}
func StringToDataTyp(str string) (DataTyp, error) {
switch str {
case "DATA_FIRST_NAME":
return DATA_FIRST_NAME, nil
case "DATA_FAMILY_NAME":
return DATA_FAMILY_NAME, nil
case "DATA_YOB":
return DATA_YOB, nil
case "DATA_LOCATION":
return DATA_LOCATION, nil
case "DATA_GENDER":
return DATA_GENDER, nil
case "DATA_OFFERINGS":
return DATA_OFFERINGS, nil
default:
return 0, errors.New("invalid DataTyp string")
}
}
2024-12-04 18:42:47 +01:00
// 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
}