Files
redka/redsrv/internal/command/server/config.go
2025-07-13 22:37:43 +05:00

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
}
}