cache-polysemy-0.1.2: cached hashmaps
Safe HaskellNone
LanguageHaskell2010

Polysemy.Cache

Synopsis

Documentation

data Cache k v (m :: * -> *) a where Source #

Constructors

Insert :: (Eq k, Hashable k) => k -> v -> Cache k v m () 
Insert' :: (Eq k, Hashable k) => Maybe TimeSpec -> k -> v -> Cache k v m () 
Lookup :: (Eq k, Hashable k) => k -> Cache k v m (Maybe v) 
Lookup' :: (Eq k, Hashable k) => k -> Cache k v m (Maybe v) 
Keys :: (Eq k, Hashable k) => Cache k v m [k] 
Delete :: (Eq k, Hashable k) => k -> Cache k v m () 
FilterWithKey :: (Eq k, Hashable k) => (k -> v -> Bool) -> Cache k v m () 
Purge :: (Eq k, Hashable k) => Cache k v m () 
PurgeExpired :: (Eq k, Hashable k) => Cache k v m () 
Size :: (Eq k, Hashable k) => Cache k v m Int 
DefaultExipration :: (Eq k, Hashable k) => Cache k v m (Maybe TimeSpec) 
SetDefaultExpiration :: (Eq k, Hashable k) => Maybe TimeSpec -> Cache k v m () 

Instances

Instances details
type DefiningModule Cache Source # 
Instance details

Defined in Polysemy.Cache

type DefiningModule Cache = "Polysemy.Cache"

insert :: forall k v r. (Eq k, Hashable k, Member (Cache k v) r) => k -> v -> Sem r () Source #

Insert an item into the cache, using the default expiration value of the cache.

insert' :: forall k v r. (Eq k, Hashable k, Member (Cache k v) r) => Maybe TimeSpec -> k -> v -> Sem r () Source #

Insert an item in the cache, with an explicit expiration value.

lookup :: forall k v r. (Eq k, Hashable k, Member (Cache k v) r) => k -> Sem r (Maybe v) Source #

Lookup an item with the given key, and delete it if it is expired.

The function will only return a value if it is present in the cache and if the item is not expired.

The function will eagerly delete the item from the cache if it is expired.

lookup' :: forall k v r. (Eq k, Hashable k, Member (Cache k v) r) => k -> Sem r (Maybe v) Source #

Lookup an item with the given key, but don't delete it if it is expired.

The function will only return a value if it is present in the cache and if the item is not expired.

The function will not delete the item from the cache.

keys :: forall k v r. (Eq k, Hashable k, Member (Cache k v) r) => Sem r [k] Source #

Return all keys present in the cache.

delete :: forall k v r. (Eq k, Hashable k, Member (Cache k v) r) => k -> Sem r () Source #

Delete an item from the cache. Won't do anything if the item is not present.

filterWithKey :: forall k v r. (Eq k, Hashable k, Member (Cache k v) r) => (k -> v -> Bool) -> Sem r () Source #

Keeps elements that satify a predicate (used for cache invalidation). Note that the predicate might be called for expired items.

purge :: forall k v r. (Eq k, Hashable k, Member (Cache k v) r) => Sem r () Source #

Delete all elements (cache invalidation).

purgeExpired :: forall k v r. (Eq k, Hashable k, Member (Cache k v) r) => Sem r () Source #

Delete all items that are expired.

This is one big atomic operation.

size :: forall k v r. (Eq k, Hashable k, Member (Cache k v) r) => Sem r Int Source #

Return the size of the cache, including expired items.

defaultExipration :: forall k v r. (Eq k, Hashable k, Member (Cache k v) r) => Sem r (Maybe TimeSpec) Source #

Get the default expiration value of newly added cache items.

setDefaultExpiration :: forall k v r. (Eq k, Hashable k, Member (Cache k v) r) => Maybe TimeSpec -> Sem r () Source #

Change the default expiration value of newly added cache items.

runCacheAtomicState :: forall k v r a. Members '[Embed IO, AtomicState (Cache k v)] r => Sem (Cache k v ': r) a -> Sem r a Source #

Run a Cache using AtomicState

runCacheAtomicState' :: forall k v r a. Members '[Final IO, AtomicState (Cache k v)] r => Sem (Cache k v ': r) a -> Sem r a Source #

Alternative version of runCacheAtomicState that uses Final instead of Embed

runCache :: forall k v r a. Members '[Embed IO] r => Maybe TimeSpec -> Sem (Cache k v ': (AtomicState (Cache k v) ': r)) a -> Sem r a Source #

Run a Cache, given a default expiration time.

runCache' :: forall k v r a. Members '[Final IO] r => Maybe TimeSpec -> Sem (Cache k v ': (AtomicState (Cache k v) ': (Embed IO ': r))) a -> Sem r a Source #

Alternative version of runCache that uses Final instead of Embed