| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | package netcacheimport (	"encoding/json"	"fmt"	"time"	"github.com/gravitl/netmaker/database")const (	expirationTime = time.Minute * 5)// CValue - the cache object for a networktype CValue struct {	Network    string    `json:"network"`	Value      string    `json:"value"`	Pass       string    `json:"pass"`	User       string    `json:"user"`	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)}
 |