futriis/internal/cli/commands.go

44 lines
1.2 KiB
Go
Raw Normal View History

2026-02-23 22:48:31 +03:00
// /futriis/internal/cli/commands.go
// Пакет cli определяет структуры команд и их параметры
package cli
// Command представляет команду СУБД
type Command struct {
Name string
Description string
Usage string
Handler func(args []string) (string, error)
}
// CommandRegistry реестр всех доступных команд
type CommandRegistry struct {
commands map[string]*Command
}
// NewCommandRegistry создаёт новый реестр команд
func NewCommandRegistry() *CommandRegistry {
return &CommandRegistry{
commands: make(map[string]*Command),
}
}
// Register регистрирует новую команду
func (cr *CommandRegistry) Register(cmd *Command) {
cr.commands[cmd.Name] = cmd
}
// Get возвращает команду по имени
func (cr *CommandRegistry) Get(name string) (*Command, bool) {
cmd, ok := cr.commands[name]
return cmd, ok
}
// List возвращает список всех команд
func (cr *CommandRegistry) List() []*Command {
cmds := make([]*Command, 0, len(cr.commands))
for _, cmd := range cr.commands {
cmds = append(cmds, cmd)
}
return cmds
}