Documentation
¶
Index ¶
- Variables
- type CacheStore
- type ErrHandler
- type Handler
- type Middle
- type Repository
- func (rep *Repository) Disable(ctx context.Context, request Request, force bool) error
- func (rep *Repository) Fetch(ctx context.Context, id Request, syncCache bool) (*Resource, error)
- func (rep *Repository) Find(ctx context.Context, request Request) (*Resource, error)
- func (rep *Repository) SyncCache(ctx context.Context, request Request) (*Resource, error)
- type Request
- type Resource
- type ResourceHandler
- func (h *ResourceHandler) BeforeResourceCache(key Request)
- func (h ResourceHandler) DisableCache(ctx context.Context, id Request) error
- func (h ResourceHandler) Downgrading(ctx context.Context, key Request, err error) (*Resource, error)
- func (h ResourceHandler) FetchFromStore(ctx context.Context, id Request) (*Resource, error)
- func (h ResourceHandler) FindFromCache(ctx context.Context, id Request) (*Resource, error)
- func (h ResourceHandler) ThroughOnCacheErr(ctx context.Context, key Request, err error) (goThrough bool)
- func (h ResourceHandler) UpdateCache(ctx context.Context, request Request, data Resource) (*Resource, error)
- type SourceDataStore
Constants ¶
This section is empty.
Variables ¶
Functions ¶
This section is empty.
Types ¶
type CacheStore ¶
type CacheStore interface { // update cached resource UpdateCache(ctx context.Context, request Request, data Resource) (*Resource, error) // find resource in cache, return nil if not in cache FindFromCache(ctx context.Context, request Request) (*Resource, error) // disable cache DisableCache(ctx context.Context, request Request) error }
cache repository used for cache store
type ErrHandler ¶
type Handler ¶
type Handler interface { CacheStore SourceDataStore ErrHandler }
type Middle ¶
type Middle interface { WrapCache(store CacheStore) CacheStore WrapStore(store SourceDataStore) SourceDataStore WrapErrHandler(handler ErrHandler) ErrHandler }
func NewRecorderMid ¶
type Repository ¶
type Repository struct {
// contains filtered or unexported fields
}
func NewRepository ¶
func NewRepository(handler ResourceHandler, logger *zap.Logger, middle ...Middle) *Repository
func (*Repository) Fetch ¶
Fetch resource from source data store. Update cache if syncCache is true. This method can be used to update cache!
type ResourceHandler ¶
type ResourceHandler struct { ThroughLimit *rate.Limiter FetchFromStoreFunc func(ctx context.Context, request Request) (*Resource, error) UpdateCacheFunc func(ctx context.Context, request Request, data Resource) (*Resource, error) FindFromCacheFunc func(ctx context.Context, request Request) (*Resource, error) DisableCacheFunc func(ctx context.Context, request Request) error ThroughOnCacheErrFunc func(ctx context.Context, resource Request, err error) (goThrough bool) // go through on cache err, store limiter will also work Downgrade func(ctx context.Context, resource Request, err error) (*Resource, error) //data downgrading BeforeResourceCacheFunc func(key Request) }
func (*ResourceHandler) BeforeResourceCache ¶
func (h *ResourceHandler) BeforeResourceCache(key Request)
func (ResourceHandler) DisableCache ¶
func (h ResourceHandler) DisableCache(ctx context.Context, id Request) error
func (ResourceHandler) Downgrading ¶
func (h ResourceHandler) Downgrading(ctx context.Context, key Request, err error) (*Resource, error)
data downgrading if find data has err
func (ResourceHandler) FetchFromStore ¶
func (ResourceHandler) FindFromCache ¶
func (ResourceHandler) ThroughOnCacheErr ¶
func (h ResourceHandler) ThroughOnCacheErr(ctx context.Context, key Request, err error) (goThrough bool)
go through on cache err, store limiter will also work
func (ResourceHandler) UpdateCache ¶
Click to show internal directories.
Click to hide internal directories.