mirror of
				https://github.com/gravitl/netmaker.git
				synced 2025-11-01 00:49:04 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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)
 | |
| }
 |