Files
redka/internal/command/get.go
2024-04-07 00:12:54 +05:00

39 lines
669 B
Go

package command
import (
"github.com/nalgeon/redka"
"github.com/tidwall/redcon"
)
// Get returns the string value of a key.
// GET key
// https://redis.io/commands/get
type Get struct {
baseCmd
key string
}
func parseGet(b baseCmd) (*Get, error) {
cmd := &Get{baseCmd: b}
if len(cmd.args) != 1 {
return cmd, ErrInvalidArgNum(cmd.name)
}
cmd.key = string(cmd.args[0])
return cmd, nil
}
func (cmd *Get) Run(w redcon.Conn, red redka.Redka) (any, error) {
v, err := red.Str().Get(cmd.key)
if err != nil {
w.WriteError(err.Error())
return nil, err
}
if v.IsEmpty() {
w.WriteNull()
return v, nil
}
w.WriteBulkString(v.String())
return v, nil
}