Moved OK and WRON_ARGS_RESPONSE to utils const file

This commit is contained in:
Kelvin Clement Mwinuka
2023-12-15 20:04:02 +08:00
parent 5db0164335
commit e6a107f78b
9 changed files with 89 additions and 97 deletions

View File

@@ -64,12 +64,12 @@ func (p Plugin) HandleCommand(ctx context.Context, cmd []string, server utils.Se
func (p Plugin) handleAuth(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) {
if len(cmd) < 2 || len(cmd) > 3 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
if err := p.acl.AuthenticateConnection(conn, cmd); err != nil {
return nil, err
}
return []byte("+OK\r\n\n"), nil
return []byte(utils.OK_RESPONSE), nil
}
func (p Plugin) handleGetUser(ctx context.Context, cmd []string, server utils.Server, conn *net.Conn) ([]byte, error) {

View File

@@ -54,7 +54,7 @@ func handleSet(ctx context.Context, cmd []string, s utils.Server) ([]byte, error
switch x := len(cmd); {
default:
return nil, errors.New("wrong number of args for SET command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
case x == 3:
key := cmd[1]
@@ -63,7 +63,7 @@ func handleSet(ctx context.Context, cmd []string, s utils.Server) ([]byte, error
s.CreateKeyAndLock(ctx, key)
s.SetValue(ctx, key, utils.AdaptType(cmd[2]))
s.KeyUnlock(key)
return []byte("+OK\r\n\n"), nil
return []byte(utils.OK_RESPONSE), nil
}
if _, err := s.KeyLock(ctx, key); err != nil {
@@ -72,14 +72,14 @@ func handleSet(ctx context.Context, cmd []string, s utils.Server) ([]byte, error
s.SetValue(ctx, key, utils.AdaptType(cmd[2]))
s.KeyUnlock(key)
return []byte("+OK\r\n\n"), nil
return []byte(utils.OK_RESPONSE), nil
}
}
func handleSetNX(ctx context.Context, cmd []string, s utils.Server) ([]byte, error) {
switch x := len(cmd); {
default:
return nil, errors.New("wrong number of args for SETNX command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
case x == 3:
key := cmd[1]
if s.KeyExists(key) {
@@ -90,7 +90,7 @@ func handleSetNX(ctx context.Context, cmd []string, s utils.Server) ([]byte, err
s.SetValue(ctx, key, utils.AdaptType(cmd[2]))
s.KeyUnlock(key)
}
return []byte("+OK\r\n\n"), nil
return []byte(utils.OK_RESPONSE), nil
}
func handleMSet(ctx context.Context, cmd []string, s utils.Server) ([]byte, error) {
@@ -148,7 +148,7 @@ func handleMSet(ctx context.Context, cmd []string, s utils.Server) ([]byte, erro
s.SetValue(ctx, k, v.value)
}
return []byte("+OK\r\n\n"), nil
return []byte(utils.OK_RESPONSE), nil
}
func NewModule() Plugin {
@@ -162,7 +162,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 3 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -174,7 +174,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 3 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},

View File

@@ -43,7 +43,7 @@ func (p Plugin) HandleCommand(ctx context.Context, cmd []string, server utils.Se
func handleGet(ctx context.Context, cmd []string, s utils.Server) ([]byte, error) {
if len(cmd) != 2 {
return nil, errors.New("wrong number of args for GET command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
key := cmd[1]
@@ -62,7 +62,7 @@ func handleGet(ctx context.Context, cmd []string, s utils.Server) ([]byte, error
func handleMGet(ctx context.Context, cmd []string, s utils.Server) ([]byte, error) {
if len(cmd) < 2 {
return nil, errors.New("wrong number of args for MGET command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
vals := []string{}
@@ -103,7 +103,7 @@ func NewModule() Plugin {
Sync: false,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 2 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -115,7 +115,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) < 2 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return cmd[1:], nil
},

View File

@@ -11,10 +11,6 @@ import (
"strings"
)
const (
OK = "+OK\r\n\n"
)
type Plugin struct {
name string
commands []utils.Command
@@ -76,7 +72,7 @@ func (p Plugin) HandleCommand(ctx context.Context, cmd []string, server utils.Se
func handleLLen(ctx context.Context, cmd []string, server utils.Server) ([]byte, error) {
if len(cmd) != 2 {
return nil, errors.New("wrong number of args for LLEN command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
if !server.KeyExists(cmd[1]) {
@@ -97,7 +93,7 @@ func handleLLen(ctx context.Context, cmd []string, server utils.Server) ([]byte,
func handleLIndex(ctx context.Context, cmd []string, server utils.Server) ([]byte, error) {
if len(cmd) != 3 {
return nil, errors.New("wrong number of args for LINDEX command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
index, ok := utils.AdaptType(cmd[2]).(int64)
@@ -127,7 +123,7 @@ func handleLIndex(ctx context.Context, cmd []string, server utils.Server) ([]byt
func handleLRange(ctx context.Context, cmd []string, server utils.Server) ([]byte, error) {
if len(cmd) != 4 {
return nil, errors.New("wrong number of arguments for LRANGE command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
start, startOk := utils.AdaptType(cmd[2]).(int64)
@@ -206,7 +202,7 @@ func handleLRange(ctx context.Context, cmd []string, server utils.Server) ([]byt
func handleLSet(ctx context.Context, cmd []string, server utils.Server) ([]byte, error) {
if len(cmd) != 4 {
return nil, errors.New("wrong number of arguments for LSET command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
if !server.KeyExists(cmd[1]) {
@@ -239,12 +235,12 @@ func handleLSet(ctx context.Context, cmd []string, server utils.Server) ([]byte,
server.SetValue(ctx, cmd[1], list)
server.KeyUnlock(cmd[1])
return []byte(OK), nil
return []byte(utils.OK_RESPONSE), nil
}
func handleLTrim(ctx context.Context, cmd []string, server utils.Server) ([]byte, error) {
if len(cmd) != 4 {
return nil, errors.New("wrong number of args for command LTRIM")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
start, startOk := utils.AdaptType(cmd[2]).(int64)
@@ -276,17 +272,17 @@ func handleLTrim(ctx context.Context, cmd []string, server utils.Server) ([]byte
if end == -1 || int(end) > len(list) {
server.SetValue(ctx, cmd[1], list[start:])
server.KeyUnlock(cmd[1])
return []byte(OK), nil
return []byte(utils.OK_RESPONSE), nil
}
server.SetValue(ctx, cmd[1], list[start:end])
server.KeyUnlock(cmd[1])
return []byte(OK), nil
return []byte(utils.OK_RESPONSE), nil
}
func handleLRem(ctx context.Context, cmd []string, server utils.Server) ([]byte, error) {
if len(cmd) != 4 {
return nil, errors.New("wrong number of arguments for LREM command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
value := cmd[3]
@@ -343,12 +339,12 @@ func handleLRem(ctx context.Context, cmd []string, server utils.Server) ([]byte,
server.SetValue(ctx, cmd[1], list)
server.KeyUnlock(cmd[1])
return []byte(OK), nil
return []byte(utils.OK_RESPONSE), nil
}
func handleLMove(ctx context.Context, cmd []string, server utils.Server) ([]byte, error) {
if len(cmd) != 5 {
return nil, errors.New("wrong number of arguments for LMOVE command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
whereFrom := strings.ToLower(cmd[3])
@@ -392,12 +388,12 @@ func handleLMove(ctx context.Context, cmd []string, server utils.Server) ([]byte
server.KeyUnlock(cmd[1])
server.KeyUnlock(cmd[2])
return []byte(OK), nil
return []byte(utils.OK_RESPONSE), nil
}
func handleLPush(ctx context.Context, cmd []string, server utils.Server) ([]byte, error) {
if len(cmd) < 3 {
return nil, fmt.Errorf("wrong number of arguments for %s command", strings.ToUpper(cmd[0]))
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
newElems := []interface{}{}
@@ -430,12 +426,12 @@ func handleLPush(ctx context.Context, cmd []string, server utils.Server) ([]byte
}
server.SetValue(ctx, key, append(newElems, l...))
return []byte(OK), nil
return []byte(utils.OK_RESPONSE), nil
}
func handleRPush(ctx context.Context, cmd []string, server utils.Server) ([]byte, error) {
if len(cmd) < 3 {
return nil, fmt.Errorf("wrong number of arguments for %s command", strings.ToUpper(cmd[0]))
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
newElems := []interface{}{}
@@ -466,12 +462,12 @@ func handleRPush(ctx context.Context, cmd []string, server utils.Server) ([]byte
}
server.SetValue(ctx, cmd[1], append(l, newElems...))
return []byte(OK), nil
return []byte(utils.OK_RESPONSE), nil
}
func handlePop(ctx context.Context, cmd []string, server utils.Server) ([]byte, error) {
if len(cmd) != 2 {
return nil, fmt.Errorf("wrong number of args for %s command", strings.ToUpper(cmd[0]))
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
if !server.KeyExists(cmd[1]) {
@@ -513,7 +509,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) < 3 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -525,7 +521,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 3 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -537,7 +533,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 2 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -549,7 +545,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 2 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -561,7 +557,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 4 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -573,7 +569,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 3 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -585,7 +581,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 4 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -597,7 +593,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 4 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -609,7 +605,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 4 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -621,7 +617,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 5 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1], cmd[2]}, nil
},
@@ -633,7 +629,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 2 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -645,7 +641,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) < 3 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -657,7 +653,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 3 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},

View File

@@ -8,10 +8,6 @@ import (
"strings"
)
const (
OK = "+OK\r\n\n"
)
type Plugin struct {
name string
commands []utils.Command
@@ -46,7 +42,7 @@ func (p Plugin) HandleCommand(ctx context.Context, cmd []string, server utils.Se
func handlePing(ctx context.Context, cmd []string, s utils.Server) ([]byte, error) {
switch len(cmd) {
default:
return nil, errors.New("wrong number of arguments for PING command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
case 1:
return []byte("+PONG\r\n\n"), nil
case 2:

View File

@@ -9,10 +9,6 @@ import (
"strings"
)
const (
OK = "+OK\r\n\n"
)
type Plugin struct {
name string
commands []utils.Command
@@ -60,7 +56,7 @@ func handleSubscribe(ctx context.Context, p Plugin, cmd []string, s utils.Server
// Subscribe to specified channel and specified consumer group
p.pubSub.Subscribe(ctx, conn, cmd[1], cmd[2])
default:
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []byte("+SUBSCRIBE_OK\r\n\n"), nil
}
@@ -72,9 +68,9 @@ func handleUnsubscribe(ctx context.Context, p Plugin, cmd []string, s utils.Serv
case 2:
p.pubSub.Unsubscribe(ctx, conn, cmd[1])
default:
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []byte("+OK\r\n\n"), nil
return []byte(utils.OK_RESPONSE), nil
}
func handlePublish(ctx context.Context, p Plugin, cmd []string, s utils.Server) ([]byte, error) {
@@ -83,7 +79,7 @@ func handlePublish(ctx context.Context, p Plugin, cmd []string, s utils.Server)
} else if len(cmd) == 2 {
p.pubSub.Publish(ctx, cmd[1], nil)
} else {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []byte("+PUBLISH_OK\r\n\n"), nil
}
@@ -101,7 +97,7 @@ func NewModule(pubsub *PubSub) Plugin {
KeyExtractionFunc: func(cmd []string) ([]string, error) {
// Treat the channel as a key
if len(cmd) != 3 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -114,7 +110,7 @@ func NewModule(pubsub *PubSub) Plugin {
KeyExtractionFunc: func(cmd []string) ([]string, error) {
// Treat the channel as a key
if len(cmd) < 2 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -127,7 +123,7 @@ func NewModule(pubsub *PubSub) Plugin {
KeyExtractionFunc: func(cmd []string) ([]string, error) {
// Treat the channel as a key
if len(cmd) != 2 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},

View File

@@ -46,7 +46,7 @@ func (p Plugin) HandleCommand(ctx context.Context, cmd []string, server utils.Se
func handleSetRange(ctx context.Context, cmd []string, server utils.Server) ([]byte, error) {
if len(cmd[1:]) != 3 {
return nil, errors.New("wrong number of args for SETRANGE command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
key := cmd[1]
@@ -112,7 +112,7 @@ func handleSetRange(ctx context.Context, cmd []string, server utils.Server) ([]b
func handleStrLen(ctx context.Context, cmd []string, server utils.Server) ([]byte, error) {
if len(cmd[1:]) != 1 {
return nil, errors.New("wrong number of args for STRLEN command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
key := cmd[1]
@@ -137,7 +137,7 @@ func handleStrLen(ctx context.Context, cmd []string, server utils.Server) ([]byt
func handleSubStr(ctx context.Context, cmd []string, server utils.Server) ([]byte, error) {
if len(cmd[1:]) != 3 {
return nil, errors.New("wrong number of args for SUBSTR command")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
key := cmd[1]
@@ -209,7 +209,7 @@ func NewModule() Plugin {
Sync: true,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 4 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -221,7 +221,7 @@ func NewModule() Plugin {
Sync: false,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 2 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -233,7 +233,7 @@ func NewModule() Plugin {
Sync: false,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 4 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},
@@ -245,7 +245,7 @@ func NewModule() Plugin {
Sync: false,
KeyExtractionFunc: func(cmd []string) ([]string, error) {
if len(cmd) != 4 {
return nil, errors.New("wrong number of arguments")
return nil, errors.New(utils.WRONG_ARGS_RESPONSE)
}
return []string{cmd[1]}, nil
},

30
src/utils/const.go Normal file
View File

@@ -0,0 +1,30 @@
package utils
const (
AdminCategory = "admin"
BitmapCategory = "bitmap"
BlockingCategory = "blocking"
ConnectionCategory = "connection"
DangerousCategory = "dangerous"
GeoCategory = "geo"
HashCategory = "hash"
HyperLogLogCategory = "hyperloglog"
FastCategory = "fast"
KeyspaceCategory = "keyspace"
ListCategory = "list"
PubSubCategory = "pubsub"
ReadCategory = "read"
ScriptingCategory = "scripting"
SetCategory = "set"
SortedSetCategory = "sortedset"
SlowCategory = "slow"
StreamCategory = "stream"
StringCategory = "string"
TransactionCategory = "transaction"
WriteCategory = "write"
)
const (
OK_RESPONSE = "+OK\r\n\n"
WRONG_ARGS_RESPONSE = "wrong number of arguments"
)

View File

@@ -60,29 +60,3 @@ type Plugin interface {
Description() string
HandleCommand(ctx context.Context, cmd []string, server Server, conn *net.Conn) ([]byte, error)
}
type CommandCategory string
const (
AdminCategory = "admin"
BitmapCategory = "bitmap"
BlockingCategory = "blocking"
ConnectionCategory = "connection"
DangerousCategory = "dangerous"
GeoCategory = "geo"
HashCategory = "hash"
HyperLogLogCategory = "hyperloglog"
FastCategory = "fast"
KeyspaceCategory = "keyspace"
ListCategory = "list"
PubSubCategory = "pubsub"
ReadCategory = "read"
ScriptingCategory = "scripting"
SetCategory = "set"
SortedSetCategory = "sortedset"
SlowCategory = "slow"
StreamCategory = "stream"
StringCategory = "string"
TransactionCategory = "transaction"
WriteCategory = "write"
)