Files
services/search/handler/search.go
2021-12-16 12:31:04 +00:00

49 lines
791 B
Go

package handler
import (
"context"
"sync"
"time"
"github.com/micro/micro/v3/service/store"
"github.com/micro/services/pkg/tenant"
pb "github.com/micro/services/search/proto"
)
type Search struct{}
var (
mtx sync.RWMutex
voteKey = "votes/"
)
type Vote struct {
Id string `json:"id"`
Message string `json:"message"`
VotedAt time.Time `json:"voted_at"`
}
func (n *Search) Vote(ctx context.Context, req *pb.VoteRequest, rsp *pb.VoteResponse) error {
mtx.Lock()
defer mtx.Unlock()
id, ok := tenant.FromContext(ctx)
if !ok {
id = "micro"
}
rec := store.NewRecord(voteKey+id, &Vote{
Id: id,
Message: req.Message,
VotedAt: time.Now(),
})
// we don't need to check the error
store.Write(rec)
rsp.Message = "Thanks for the vote!"
return nil
}