github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/ev/evcache/evcache.go (about)

     1  package evcache
     2  
     3  import (
     4  	"github.com/eko/gocache/cache"
     5  	"github.com/eko/gocache/store"
     6  )
     7  
     8  // Interface is Cache interface
     9  type Interface interface {
    10  	Get(key interface{}) (interface{}, error)
    11  	Set(key, object interface{}) error
    12  }
    13  
    14  // NewCache instantiates adapter for cache.CacheInterface
    15  func NewCache(cache cache.CacheInterface, option *store.Options) Interface {
    16  	return &gocacheAdapter{
    17  		cache:  cache,
    18  		option: option,
    19  	}
    20  }
    21  
    22  type gocacheAdapter struct {
    23  	cache  cache.CacheInterface
    24  	option *store.Options
    25  }
    26  
    27  func (c *gocacheAdapter) Get(key interface{}) (interface{}, error) {
    28  	return c.cache.Get(key)
    29  }
    30  
    31  func (c *gocacheAdapter) Set(key, object interface{}) error {
    32  	return c.cache.Set(key, object, c.option)
    33  }
    34  
    35  // Marshaler is interface for marshaler.Marshaler
    36  type Marshaler interface {
    37  	Get(key interface{}, returnObj interface{}) (interface{}, error)
    38  	Set(key, object interface{}, options *store.Options) error
    39  	Delete(key interface{}) error
    40  	Invalidate(options store.InvalidateOptions) error
    41  	Clear() error
    42  }
    43  
    44  // MarshallerReturnObj generates returned object to fill by marshaler.Marshaler
    45  type MarshallerReturnObj func() interface{}
    46  
    47  // NewCacheMarshaller generates adapter for marshaler.Marshaler
    48  func NewCacheMarshaller(marshaller Marshaler, returnObj MarshallerReturnObj, option *store.Options) Interface {
    49  	return &gocacheMarshallerAdapter{
    50  		marshaller: marshaller,
    51  		returnObj:  returnObj,
    52  		option:     option,
    53  	}
    54  }
    55  
    56  type gocacheMarshallerAdapter struct {
    57  	marshaller Marshaler
    58  	returnObj  MarshallerReturnObj
    59  	option     *store.Options
    60  }
    61  
    62  func (c *gocacheMarshallerAdapter) Get(key interface{}) (interface{}, error) {
    63  	return c.marshaller.Get(key, c.returnObj())
    64  }
    65  
    66  func (c *gocacheMarshallerAdapter) Set(key, object interface{}) error {
    67  	return c.marshaller.Set(key, object, c.option)
    68  }