1
0
Fork 0
mirror of https://github.com/eosswedenorg/thalos synced 2026-06-16 04:24:56 +02:00
thalos/app/abi/cache.go

42 lines
831 B
Go

package abi
import (
"context"
"time"
eos "github.com/eoscanada/eos-go"
redis_cache "github.com/go-redis/cache/v8"
)
type Cache struct {
c *redis_cache.Cache
ctx context.Context
prefix string
}
func NewCache(prefix string, options *redis_cache.Options) *Cache {
return &Cache{
c: redis_cache.New(options),
ctx: context.Background(),
prefix: prefix,
}
}
func (cache *Cache) Get(account string) (*eos.ABI, error) {
var v eos.ABI
err := cache.c.Get(cache.ctx, cache.key(account), &v)
return &v, err
}
func (cache *Cache) Set(account string, abi *eos.ABI, ttl time.Duration) error {
return cache.c.Set(&redis_cache.Item{
Ctx: cache.ctx,
Key: cache.key(account),
Value: *abi,
TTL: ttl,
})
}
func (cache *Cache) key(account string) string {
return cache.prefix + "." + account
}