statics.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package database
  2. import (
  3. "encoding/json"
  4. "strings"
  5. )
  6. // SetPeers - sets peers for a network
  7. func SetPeers(newPeers map[string]string, networkName string) bool {
  8. areEqual := PeersAreEqual(newPeers, networkName)
  9. if !areEqual {
  10. jsonData, err := json.Marshal(newPeers)
  11. if err != nil {
  12. return false
  13. }
  14. InsertPeer(networkName, string(jsonData))
  15. return true
  16. }
  17. return !areEqual
  18. }
  19. // GetPeers - gets peers for a given network
  20. func GetPeers(networkName string) (map[string]string, error) {
  21. record, err := FetchRecord(PEERS_TABLE_NAME, networkName)
  22. if err != nil && !IsEmptyRecord(err) {
  23. return nil, err
  24. }
  25. currentDataMap := make(map[string]string)
  26. if IsEmptyRecord(err) {
  27. return currentDataMap, nil
  28. }
  29. err = json.Unmarshal([]byte(record), &currentDataMap)
  30. return currentDataMap, err
  31. }
  32. // PeersAreEqual - checks if peers are the same
  33. func PeersAreEqual(toCompare map[string]string, networkName string) bool {
  34. currentDataMap, err := GetPeers(networkName)
  35. if err != nil {
  36. return false
  37. }
  38. if len(currentDataMap) != len(toCompare) {
  39. return false
  40. }
  41. for k := range currentDataMap {
  42. if toCompare[k] != currentDataMap[k] {
  43. return false
  44. }
  45. }
  46. return true
  47. }
  48. // IsEmptyRecord - checks for if it's an empty record error or not
  49. func IsEmptyRecord(err error) bool {
  50. if err == nil {
  51. return false
  52. }
  53. return strings.Contains(err.Error(), NO_RECORD) || strings.Contains(err.Error(), NO_RECORDS)
  54. }