statics.go 1.2 KB

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