123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package netcache
- import (
- "encoding/json"
- "fmt"
- "time"
- "github.com/gravitl/netmaker/database"
- )
- const (
- expirationTime = time.Minute * 5
- )
- // CValue - the cache object for a network
- type 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 db
- func 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 err
- func 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 db
- func Del(k string) error {
- return database.DeleteRecord(database.CACHE_TABLE_NAME, k)
- }
|