mirror of
https://github.com/EchoVault/SugarDB.git
synced 2025-10-14 04:03:50 +08:00
Implemented llen command
This commit is contained in:
@@ -44,6 +44,9 @@ func (p *plugin) HandleCommand(cmd []string, server interface{}, conn *bufio.Wri
|
|||||||
c := strings.ToLower(cmd[0])
|
c := strings.ToLower(cmd[0])
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
|
case c == "llen":
|
||||||
|
handleLLen(cmd, server.(Server), conn)
|
||||||
|
|
||||||
case c == "lrange":
|
case c == "lrange":
|
||||||
handleLRange(cmd, server.(Server), conn)
|
handleLRange(cmd, server.(Server), conn)
|
||||||
|
|
||||||
@@ -58,6 +61,29 @@ func (p *plugin) HandleCommand(cmd []string, server interface{}, conn *bufio.Wri
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handleLLen(cmd []string, server Server, conn *bufio.Writer) {
|
||||||
|
if len(cmd) != 2 {
|
||||||
|
conn.Write([]byte("-Error wrong number of args for LLEN command\r\n\n"))
|
||||||
|
conn.Flush()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
server.Lock()
|
||||||
|
|
||||||
|
list, ok := server.GetData(cmd[1]).([]interface{})
|
||||||
|
|
||||||
|
if !ok {
|
||||||
|
server.Unlock()
|
||||||
|
conn.Write([]byte("-Error LLEN command on non-list item\r\n\n"))
|
||||||
|
conn.Flush()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
server.Unlock()
|
||||||
|
conn.Write([]byte(fmt.Sprintf(":%d\r\n\n", len(list))))
|
||||||
|
conn.Flush()
|
||||||
|
}
|
||||||
|
|
||||||
func handleLRange(cmd []string, server Server, conn *bufio.Writer) {
|
func handleLRange(cmd []string, server Server, conn *bufio.Writer) {
|
||||||
if len(cmd) != 4 {
|
if len(cmd) != 4 {
|
||||||
conn.Write([]byte("-Error wrong number of arguments for LRANGE command\r\n\n"))
|
conn.Write([]byte("-Error wrong number of arguments for LRANGE command\r\n\n"))
|
||||||
@@ -257,13 +283,6 @@ func handlePop(cmd []string, server Server, conn *bufio.Writer) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if list == nil {
|
|
||||||
server.Unlock()
|
|
||||||
conn.Write([]byte("-Error no list at key\r\n\n"))
|
|
||||||
conn.Flush()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
switch strings.ToLower(cmd[0]) {
|
switch strings.ToLower(cmd[0]) {
|
||||||
default:
|
default:
|
||||||
server.SetData(cmd[1], list[1:])
|
server.SetData(cmd[1], list[1:])
|
||||||
|
Reference in New Issue
Block a user