Skip to content

Commit

Permalink
Merge pull request #251 from wangchenguang123/cli-set
Browse files Browse the repository at this point in the history
add all functions in cli set(#248)
  • Loading branch information
sjcsjc123 authored Jul 30, 2023
2 parents e46dcef + f21af43 commit b79457b
Show file tree
Hide file tree
Showing 10 changed files with 711 additions and 32 deletions.
117 changes: 116 additions & 1 deletion cmd/client/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ func register(app *grumble.App) {
Run: stringLPushsData,
Args: func(a *grumble.Args) {
a.String("key", "key", grumble.Default(""))
a.StringList("values", "values", grumble.Default([]string{}))
a.StringList("values", "values", grumble.Default(""))
},
})

Expand Down Expand Up @@ -430,4 +430,119 @@ func register(app *grumble.App) {
},
})

app.AddCommand(&grumble.Command{
Name: "Sadd",
Help: "Set the value in a set in set-structure",
Run: SetAdd,
Args: func(a *grumble.Args) {
a.String("key", "key", grumble.Default(""))
a.String("member", "member", grumble.Default(""))
},
})

app.AddCommand(&grumble.Command{
Name: "Sadds",
Help: "Set multiple values from a set in set-structure",
Run: SetAdds,
Args: func(a *grumble.Args) {
a.String("key", "key", grumble.Default(""))
a.StringList("members", "members", grumble.Default(""))
},
})

app.AddCommand(&grumble.Command{
Name: "Srem",
Help: "Remove the value from a set in set-structure",
Run: SetRem,
Args: func(a *grumble.Args) {
a.String("key", "key", grumble.Default(""))
a.String("member", "member", grumble.Default(""))
},
})

app.AddCommand(&grumble.Command{
Name: "Srems",
Help: "Remove multiple values from a set in set-structure",
Run: SetRems,
Args: func(a *grumble.Args) {
a.String("key", "key", grumble.Default(""))
a.StringList("members", "members", grumble.Default(""))
},
})

app.AddCommand(&grumble.Command{
Name: "Scard",
Help: "Get the number of elements in a set in set-structure",
Run: SetCard,
Args: func(a *grumble.Args) {
a.String("key", "key", grumble.Default(""))
},
})

app.AddCommand(&grumble.Command{
Name: "Smembers",
Help: "Get all members of a set in set-structure",
Run: SetMembers,
Args: func(a *grumble.Args) {
a.String("key", "key", grumble.Default(""))
},
})

app.AddCommand(&grumble.Command{
Name: "Sismember",
Help: "Check if a value exists in a set in set-structure",
Run: SetIsMember,
Args: func(a *grumble.Args) {
a.String("key", "key", grumble.Default(""))
a.String("member", "member", grumble.Default(""))
},
})

app.AddCommand(&grumble.Command{
Name: "Sunion",
Help: "Get the union of multiple sets in set-structure",
Run: SetUnion,
Args: func(a *grumble.Args) {
a.StringList("keys", "keys", grumble.Default(""))
},
})

app.AddCommand(&grumble.Command{
Name: "Sinter",
Help: "Get the intersection of multiple sets in set-structure",
Run: SetInter,
Args: func(a *grumble.Args) {
a.StringList("keys", "keys", grumble.Default(""))
},
})

app.AddCommand(&grumble.Command{
Name: "Sdiff",
Help: "Get the difference between multiple sets in set-structure",
Run: SetDiff,
Args: func(a *grumble.Args) {
a.StringList("keys", "keys", grumble.Default(""))
},
})

app.AddCommand(&grumble.Command{
Name: "Sunionstore",
Help: "Store the union of multiple sets in set-structure to a new set",
Run: SetUnionStore,
Args: func(a *grumble.Args) {
a.String("destinationKey", "destinationKey", grumble.Default(""))
a.StringList("keys", "keys", grumble.Default(""))
},
})

app.AddCommand(&grumble.Command{
Name: "Sinterstore",
Help: "Store the intersection of multiple sets in set-structure to a new set",
Run: SetInterStore,
Args: func(a *grumble.Args) {
a.String("destinationKey", "destinationKey", grumble.Default(""))
a.StringList("keys", "keys", grumble.Default(""))
},
})

}
205 changes: 205 additions & 0 deletions cmd/client/set.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
package client

import (
"fmt"
"github.com/desertbit/grumble"
)

func SetAdd(c *grumble.Context) error {
key := c.Args.String("key")
member := c.Args.String("member")
if key == "" || member == "" {
fmt.Println("key or value is empty")
return nil
}

err := newClient().SAdd(key, member)
if err != nil {
fmt.Println("SAdd data error: ", err)
return err
}
fmt.Println("SAdd data success")
return nil
}

func SetAdds(c *grumble.Context) error {
key := c.Args.String("key")
members := c.Args.StringList("members")
if key == "" || len(members) == 0 {
fmt.Println("key or members are empty")
return nil
}

err := newClient().SAdds(key, members)
if err != nil {
fmt.Println("SAdds data error: ", err)
return err
}
fmt.Println("SAdds data success")
return nil
}

func SetRem(c *grumble.Context) error {
key := c.Args.String("key")
member := c.Args.String("member")
if key == "" || member == "" {
fmt.Println("key or value is empty")
return nil
}

err := newClient().SRem(key, member)
if err != nil {
fmt.Println("SRem data error: ", err)
return err
}
fmt.Println("SRem data success")
return nil
}

func SetRems(c *grumble.Context) error {
key := c.Args.String("key")
members := c.Args.StringList("members")
if key == "" || len(members) == 0 {
fmt.Println("key or members are empty")
return nil
}

err := newClient().SRems(key, members)
if err != nil {
fmt.Println("SRems data error: ", err)
return err
}
fmt.Println("SRems data success")
return nil
}

func SetCard(c *grumble.Context) error {
key := c.Args.String("key")
if key == "" {
fmt.Println("key is empty")
return nil
}

count, err := newClient().SCard(key)
if err != nil {
fmt.Println("SCard data error: ", err)
return err
}
fmt.Println("SCard count:", count)
return nil
}

func SetMembers(c *grumble.Context) error {
key := c.Args.String("key")
if key == "" {
fmt.Println("key is empty")
return nil
}

members, err := newClient().SMembers(key)
if err != nil {
fmt.Println("SMembers data error: ", err)
return err
}
fmt.Println("SMembers data:", members)
return nil
}

func SetIsMember(c *grumble.Context) error {
key := c.Args.String("key")
member := c.Args.String("member")
if key == "" || member == "" {
fmt.Println("key or member is empty")
return nil
}

isMember, err := newClient().SIsMember(key, member)
if err != nil {
fmt.Println("SIsMember data error: ", err)
return err
}
fmt.Println("SIsMember result:", isMember)
return nil
}

func SetUnion(c *grumble.Context) error {
keys := c.Args.StringList("keys")
if len(keys) == 0 {
fmt.Println("keys list is empty")
return nil
}

union, err := newClient().SUnion(keys)
if err != nil {
fmt.Println("SUnion data error: ", err)
return err
}
fmt.Println("SUnion result:", union)
return nil
}

func SetInter(c *grumble.Context) error {
keys := c.Args.StringList("keys")
if len(keys) == 0 {
fmt.Println("keys list is empty")
return nil
}

inter, err := newClient().SInter(keys)
if err != nil {
fmt.Println("SInter data error: ", err)
return err
}
fmt.Println("SInter result:", inter)
return nil
}

func SetDiff(c *grumble.Context) error {
keys := c.Args.StringList("keys")
if len(keys) == 0 {
fmt.Println("keys list is empty")
return nil
}

diff, err := newClient().SDiff(keys)
if err != nil {
fmt.Println("SDiff data error: ", err)
return err
}
fmt.Println("SDiff result:", diff)
return nil
}

func SetUnionStore(c *grumble.Context) error {
destinationKey := c.Args.String("destinationKey")
keys := c.Args.StringList("keys")
if destinationKey == "" || len(keys) == 0 {
fmt.Println("destinationKey or keys list is empty")
return nil
}

err := newClient().SUnionStore(destinationKey, keys)
if err != nil {
fmt.Println("SUnionStore data error: ", err)
return err
}
fmt.Println("SUnionStore success")
return nil
}

func SetInterStore(c *grumble.Context) error {
destinationKey := c.Args.String("destinationKey")
keys := c.Args.StringList("keys")
if destinationKey == "" || len(keys) == 0 {
fmt.Println("destinationKey or keys list is empty")
return nil
}

err := newClient().SInterStore(destinationKey, keys)
if err != nil {
fmt.Println("SInterStore data error: ", err)
return err
}
fmt.Println("SInterStore success")
return nil
}
8 changes: 8 additions & 0 deletions engine/grpc/base.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/ByteStorage/FlyDB/engine/grpc/service"
"github.com/ByteStorage/FlyDB/lib/proto/ghash"
"github.com/ByteStorage/FlyDB/lib/proto/glist"
"github.com/ByteStorage/FlyDB/lib/proto/gset"
"github.com/ByteStorage/FlyDB/lib/proto/gstring"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
Expand Down Expand Up @@ -61,6 +62,13 @@ func NewService(options config.Options, addr string) (Base, error) {
baseService.RegisterService(listService)
glist.RegisterGListServiceServer(baseService.server, listService)

setService, err := service.NewSetService(options)
if err != nil {
return nil, err
}
baseService.RegisterService(setService)
gset.RegisterGSetServiceServer(baseService.server, setService)

return baseService, nil
}

Expand Down
10 changes: 10 additions & 0 deletions engine/grpc/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package client
import (
"github.com/ByteStorage/FlyDB/lib/proto/ghash"
"github.com/ByteStorage/FlyDB/lib/proto/glist"
"github.com/ByteStorage/FlyDB/lib/proto/gset"
"github.com/ByteStorage/FlyDB/lib/proto/gstring"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
Expand Down Expand Up @@ -40,3 +41,12 @@ func newListGrpcClient(addr string) (glist.GListServiceClient, error) {
client := glist.NewGListServiceClient(conn)
return client, nil
}

func newSetGrpcClient(addr string) (gset.GSetServiceClient, error) {
conn, err := grpc.Dial(addr, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
return nil, err
}
client := gset.NewGSetServiceClient(conn)
return client, nil
}
Loading

0 comments on commit b79457b

Please sign in to comment.