package common import ( "encoding/binary" "errors" "git.defalsify.org/vise.git/logging" ) type DataTyp uint16 const ( DATA_ACCOUNT DataTyp = iota DATA_ACCOUNT_CREATED DATA_TRACKING_ID DATA_PUBLIC_KEY DATA_CUSTODIAL_ID DATA_ACCOUNT_PIN DATA_ACCOUNT_STATUS DATA_FIRST_NAME DATA_FAMILY_NAME DATA_YOB DATA_LOCATION DATA_GENDER DATA_OFFERINGS DATA_RECIPIENT DATA_AMOUNT DATA_TEMPORARY_VALUE DATA_ACTIVE_SYM DATA_ACTIVE_BAL DATA_BLOCKED_NUMBER 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 ) var ( logg = logging.NewVanilla().WithDomain("urdt-common") ) func typToBytes(typ DataTyp) []byte { var b [2]byte binary.BigEndian.PutUint16(b[:], uint16(typ)) return b[:] } func PackKey(typ DataTyp, data []byte) []byte { 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") } } // 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 }