Files
Sillyv2/core/grpc_bucket.go
T
2023-07-22 07:38:55 +08:00

57 lines
2.0 KiB
Go

package core
import (
"context"
"github.com/cdle/sillyplus/proto3/srpc"
"github.com/cdle/sillyplus/utils"
)
type SillyGirlService struct {
srpc.UnsafeSillyGirlServiceServer
}
// Get implements BucketServiceServer.Get.
func (sg *SillyGirlService) BucketGet(ctx context.Context, req *srpc.BucketKeyRequest) (*srpc.Default, error) {
value := MakeBucket(req.Name).GetString(req.Key)
return &srpc.Default{Value: value}, nil
}
// Set implements BucketServiceServer.Set.
func (sg *SillyGirlService) BucketSet(ctx context.Context, req *srpc.BucketSetRequest) (*srpc.BucketSetResponse, error) {
message, changed, err := MakeBucket(req.Name).Set(req.Key, req.Value)
return &srpc.BucketSetResponse{Changed: changed, Message: message}, err
}
// Delete implements BucketServiceServer.Delete.
func (sg *SillyGirlService) BucketDelete(ctx context.Context, req *srpc.BucketRequest) (*srpc.Empty, error) {
err := MakeBucket(req.Name).Delete()
return &srpc.Empty{}, err
}
// Keys implements BucketServiceServer.Keys.
func (sg *SillyGirlService) BucketKeys(ctx context.Context, req *srpc.BucketRequest) (*srpc.BucketKeysResponse, error) {
keys, err := MakeBucket(req.Name).Keys()
return &srpc.BucketKeysResponse{Keys: keys}, err
}
// Len implements BucketServiceServer.Len.
func (sg *SillyGirlService) BucketLen(ctx context.Context, req *srpc.BucketRequest) (*srpc.LenResponse, error) {
keys, err := MakeBucket(req.Name).Keys()
return &srpc.LenResponse{Length: int32(len(keys))}, err
}
func (sg *SillyGirlService) BucketGetAll(ctx context.Context, req *srpc.BucketRequest) (*srpc.Default, error) {
var values = map[string]string{}
MakeBucket(req.Name).Foreach(func(b1, b2 []byte) error {
values[string(b1)] = string(b2)
return nil
})
return &srpc.Default{Value: string(utils.JsonMarshal(values))}, nil
}
// Buckets implements BucketServiceServer.Buckets.
func (sg *SillyGirlService) BucketBuckets(ctx context.Context, req *srpc.Empty) (*srpc.BucketsResponse, error) {
return &srpc.BucketsResponse{Buckets: MakeBucket("app").Buckets()}, nil
}