mirror of
https://github.com/nalgeon/redka.git
synced 2025-10-05 07:56:49 +08:00
50 lines
931 B
Go
50 lines
931 B
Go
package server
|
|
|
|
import (
|
|
"github.com/nalgeon/redka/redsrv/internal/redis"
|
|
)
|
|
|
|
// Container command for runtime configuration commands.
|
|
// CONFIG
|
|
// https://redis.io/commands/config
|
|
type Config struct {
|
|
redis.BaseCmd
|
|
subcmd string
|
|
get ConfigGet
|
|
}
|
|
|
|
func ParseConfig(b redis.BaseCmd) (Config, error) {
|
|
// Extract the subcommand.
|
|
cmd := Config{BaseCmd: b}
|
|
if len(cmd.Args()) == 0 {
|
|
return Config{}, redis.ErrInvalidArgNum
|
|
}
|
|
cmd.subcmd = string(cmd.Args()[0])
|
|
|
|
// Parse the subcommand.
|
|
var err error
|
|
args := cmd.Args()[1:]
|
|
switch cmd.subcmd {
|
|
case "get":
|
|
cmd.get, err = ParseConfigGet(args)
|
|
default:
|
|
err = redis.ErrUnknownSubcmd
|
|
}
|
|
|
|
// Return the resulting command.
|
|
if err != nil {
|
|
return Config{}, err
|
|
}
|
|
return cmd, nil
|
|
}
|
|
|
|
func (c Config) Run(w redis.Writer, red redis.Redka) (any, error) {
|
|
switch c.subcmd {
|
|
case "get":
|
|
return c.get.Run(w, red)
|
|
default:
|
|
w.WriteString("OK")
|
|
return true, nil
|
|
}
|
|
}
|