44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
// /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
|
|
}
|