mirror of
				https://github.com/gravitl/netmaker.git
				synced 2025-10-31 12:16:29 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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)
 | |
| }
 | 
