fix: error caused when execute lua script in cli #103
This commit is contained in:
parent
08c42ca85c
commit
c7a365e8e9
|
@ -2,6 +2,7 @@ package services
|
|||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/redis/go-redis/v9"
|
||||
"github.com/wailsapp/wails/v2/pkg/runtime"
|
||||
|
@ -41,12 +42,12 @@ func Cli() *cliService {
|
|||
}
|
||||
|
||||
func (c *cliService) runCommand(server, data string) {
|
||||
if cmds := strings.Split(data, " "); len(cmds) > 0 && len(cmds[0]) > 0 {
|
||||
if cmds := strutil.SplitCmd(data); len(cmds) > 0 && len(cmds[0]) > 0 {
|
||||
if client, err := c.getRedisClient(server); err == nil {
|
||||
args := sliceutil.Map(cmds, func(i int) any {
|
||||
return cmds[i]
|
||||
})
|
||||
if result, err := client.Do(c.ctx, args...).Result(); err == nil || err == redis.Nil {
|
||||
if result, err := client.Do(c.ctx, args...).Result(); err == nil || errors.Is(err, redis.Nil) {
|
||||
if strings.ToLower(cmds[0]) == "select" {
|
||||
// switch database
|
||||
if db, ok := strutil.AnyToInt(cmds[1]); ok {
|
||||
|
|
|
@ -2,7 +2,9 @@ package strutil
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
sliceutil "tinyrdm/backend/utils/slice"
|
||||
)
|
||||
|
||||
|
@ -129,3 +131,16 @@ func AnyToString(value interface{}, prefix string, layer int) (s string) {
|
|||
//
|
||||
// return output.String(), true
|
||||
//}
|
||||
|
||||
func SplitCmd(cmd string) []string {
|
||||
re := regexp.MustCompile(`'[^']+'|"[^"]+"|\S+`)
|
||||
args := re.FindAllString(cmd, -1)
|
||||
return sliceutil.FilterMap(args, func(i int) (string, bool) {
|
||||
arg := strings.Trim(args[i], "\"")
|
||||
arg = strings.Trim(arg, "'")
|
||||
if len(arg) <= 0 {
|
||||
return "", false
|
||||
}
|
||||
return arg, true
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue