| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | package netcacheimport (	"encoding/json"	"fmt"	"time"	"github.com/gravitl/netmaker/database"	"github.com/gravitl/netmaker/models")const (	expirationTime = time.Minute * 5)// CValue - the cache object for a networktype CValue struct {	Network    string      `json:"network,omitempty"`	Value      string      `json:"value"`	Host       models.Host `json:"host"`	Pass       string      `json:"pass,omitempty"`	User       string      `json:"user,omitempty"`	ALL        bool        `json:"all,omitempty"`	Expiration time.Time   `json:"expiration"`}var ErrExpired = fmt.Errorf("expired")// Set - sets a value to a key in dbfunc Set(k string, newValue *CValue) error {	newValue.Expiration = time.Now().Add(expirationTime)	newData, err := json.Marshal(newValue)	if err != nil {		return err	}	return database.Insert(k, string(newData), database.CACHE_TABLE_NAME)}// Get - gets a value from db, if expired, return errfunc Get(k string) (*CValue, error) {	record, err := database.FetchRecord(database.CACHE_TABLE_NAME, k)	if err != nil {		return nil, err	}	var entry CValue	if err := json.Unmarshal([]byte(record), &entry); err != nil {		return nil, err	}	if time.Now().After(entry.Expiration) {		return nil, ErrExpired	}	return &entry, nil}// Del - deletes a value from dbfunc Del(k string) error {	return database.DeleteRecord(database.CACHE_TABLE_NAME, k)}
 |