mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
| package angularpatternsstore
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/grafana/grafana/pkg/infra/kvstore"
 | |
| 	"github.com/grafana/grafana/pkg/services/pluginsintegration/cachekvstore"
 | |
| )
 | |
| 
 | |
| type Service interface {
 | |
| 	GetLastUpdated(ctx context.Context) (time.Time, error)
 | |
| 
 | |
| 	Get(ctx context.Context) (string, bool, error)
 | |
| 	Set(ctx context.Context, value any) error
 | |
| 	SetLastUpdated(ctx context.Context) error
 | |
| 
 | |
| 	GetETag(ctx context.Context) (string, bool, error)
 | |
| 	SetETag(ctx context.Context, etag string) error
 | |
| }
 | |
| 
 | |
| const (
 | |
| 	kvNamespace = "plugin.angularpatterns"
 | |
| 	keyPatterns = "angular_patterns"
 | |
| 	keyEtag     = "etag"
 | |
| )
 | |
| 
 | |
| // KVStoreService allows to cache GCOM angular patterns into the database, as a cache.
 | |
| type KVStoreService struct {
 | |
| 	*cachekvstore.CacheKvStore
 | |
| }
 | |
| 
 | |
| var _ Service = (*KVStoreService)(nil)
 | |
| 
 | |
| func ProvideService(kv kvstore.KVStore) Service {
 | |
| 	return &KVStoreService{
 | |
| 		CacheKvStore: cachekvstore.NewCacheKvStore(kv, kvNamespace),
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Get returns the stored angular patterns from the underlying cachekvstore.
 | |
| func (s *KVStoreService) Get(ctx context.Context) (string, bool, error) {
 | |
| 	return s.CacheKvStore.Get(ctx, keyPatterns)
 | |
| }
 | |
| 
 | |
| // GetETag returns the stored etag from the underlying cachekvstore.
 | |
| func (s *KVStoreService) GetETag(ctx context.Context) (string, bool, error) {
 | |
| 	return s.CacheKvStore.Get(ctx, keyEtag)
 | |
| }
 | |
| 
 | |
| // Set stores the given angular patterns in the underlying cachekvstore.
 | |
| func (s *KVStoreService) Set(ctx context.Context, value any) error {
 | |
| 	return s.CacheKvStore.Set(ctx, keyPatterns, value)
 | |
| }
 | |
| 
 | |
| // SetETag stores the given etag in the underlying cachekvstore.
 | |
| func (s *KVStoreService) SetETag(ctx context.Context, etag string) error {
 | |
| 	return s.CacheKvStore.Set(ctx, keyEtag, etag)
 | |
| }
 |