mirror of
https://github.com/go-micro/go-micro.git
synced 2025-03-23 20:32:32 +02:00
61 lines
1.2 KiB
Go
61 lines
1.2 KiB
Go
package handler
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/asim/go-micro/v3/cache"
|
|
log "github.com/asim/go-micro/v3/logger"
|
|
|
|
pb "github.com/asim/go-micro/examples/v3/cache/proto"
|
|
)
|
|
|
|
type Cache struct {
|
|
cache cache.Cache
|
|
}
|
|
|
|
func NewCache(opts ...cache.Option) *Cache {
|
|
c := cache.NewCache(opts...)
|
|
return &Cache{c}
|
|
}
|
|
|
|
func (c *Cache) Get(ctx context.Context, req *pb.GetRequest, rsp *pb.GetResponse) error {
|
|
log.Infof("Received Cache.Get request: %v", req)
|
|
|
|
v, e, err := c.cache.Context(ctx).Get(req.Key)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
rsp.Value = fmt.Sprintf("%v", v)
|
|
rsp.Expiration = e.String()
|
|
|
|
return nil
|
|
}
|
|
|
|
func (c *Cache) Put(ctx context.Context, req *pb.PutRequest, rsp *pb.PutResponse) error {
|
|
log.Infof("Received Cache.Put request: %v", req)
|
|
|
|
d, err := time.ParseDuration(req.Duration)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := c.cache.Context(ctx).Put(req.Key, req.Value, d); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (c *Cache) Delete(ctx context.Context, req *pb.DeleteRequest, rsp *pb.DeleteResponse) error {
|
|
log.Infof("Received Cache.Delete request: %v", req)
|
|
|
|
if err := c.cache.Context(ctx).Delete(req.Key); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|