1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package database
- import (
- "encoding/json"
- "strings"
- )
- // SetPeers - sets peers for a network
- func SetPeers(newPeers map[string]string, networkName string) bool {
- areEqual := PeersAreEqual(newPeers, networkName)
- if !areEqual {
- jsonData, err := json.Marshal(newPeers)
- if err != nil {
- return false
- }
- InsertPeer(networkName, string(jsonData))
- return true
- }
- return !areEqual
- }
- // GetPeers - gets peers for a given network
- func GetPeers(networkName string) (map[string]string, error) {
- record, err := FetchRecord(PEERS_TABLE_NAME, networkName)
- if err != nil && !IsEmptyRecord(err) {
- return nil, err
- }
- currentDataMap := make(map[string]string)
- if IsEmptyRecord(err) {
- return currentDataMap, nil
- }
- err = json.Unmarshal([]byte(record), ¤tDataMap)
- return currentDataMap, err
- }
- // PeersAreEqual - checks if peers are the same
- func PeersAreEqual(toCompare map[string]string, networkName string) bool {
- currentDataMap, err := GetPeers(networkName)
- if err != nil {
- return false
- }
- if len(currentDataMap) != len(toCompare) {
- return false
- }
- for k := range currentDataMap {
- if toCompare[k] != currentDataMap[k] {
- return false
- }
- }
- return true
- }
- // IsEmptyRecord - checks for if it's an empty record error or not
- func IsEmptyRecord(err error) bool {
- if err == nil {
- return false
- }
- return strings.Contains(err.Error(), NO_RECORD) || strings.Contains(err.Error(), NO_RECORDS)
- }
|