package cache import ( "github.com/micro/go-micro/v2/store" "github.com/pkg/errors" ) // Cache implements a cache in front of a micro Store type Cache struct { options store.Options store.Store stores []store.Store } // NewStore returns new cache func NewStore(opts ...store.Option) store.Store { s := &Cache{ options: store.Options{}, stores: []store.Store{}, } for _, o := range opts { o(&s.options) } return s } // Init initialises a new cache func (c *Cache) Init(opts ...store.Option) error { for _, o := range opts { o(&c.options) } for _, s := range c.stores { if err := s.Init(); err != nil { return errors.Wrapf(err, "Store %s failed to Init()", s.String()) } } return nil }