vspd/database/helpers.go
2022-03-28 16:37:25 +01:00

62 lines
1.2 KiB
Go

// Copyright (c) 2022 The Decred developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.
package database
import (
"encoding/binary"
"encoding/json"
)
func bytesToStringMap(bytes []byte) (map[string]string, error) {
if bytes == nil {
return make(map[string]string), nil
}
var stringMap map[string]string
err := json.Unmarshal(bytes, &stringMap)
if err != nil {
return nil, err
}
// stringMap can still be nil here, eg. if bytes == "null".
if stringMap == nil {
stringMap = make(map[string]string)
}
return stringMap, nil
}
func int64ToBytes(i int64) []byte {
bytes := make([]byte, 8)
binary.LittleEndian.PutUint64(bytes, uint64(i))
return bytes
}
func bytesToInt64(bytes []byte) int64 {
return int64(binary.LittleEndian.Uint64(bytes))
}
func uint32ToBytes(i uint32) []byte {
bytes := make([]byte, 4)
binary.LittleEndian.PutUint32(bytes, i)
return bytes
}
func bytesToUint32(bytes []byte) uint32 {
return binary.LittleEndian.Uint32(bytes)
}
func bytesToBool(bytes []byte) bool {
return bytes[0] == 1
}
func boolToBytes(b bool) []byte {
if b {
return []byte{1}
}
return []byte{0}
}