diff --git a/internal/client/111handler.go b/internal/client/111handler.go deleted file mode 100644 index 4a1f9c4..0000000 --- a/internal/client/111handler.go +++ /dev/null @@ -1,105 +0,0 @@ -// /futriis/internal/client/handler.go -// Пакет client реализует обработку команд клиента СУБД Futriis -// Обеспечивает взаимодействие с движком и форматированный вывод результатов - -package client - -import ( - "bufio" - "fmt" - "os" - "strings" - - "futriis/internal/engine" - "futriis/pkg/utils" -) - -// CommandHandler обрабатывает команды клиента -type CommandHandler struct { - engine *engine.Engine -} - -// NewCommandHandler создаёт новый обработчик команд -func NewCommandHandler(engine *engine.Engine) *CommandHandler { - return &CommandHandler{ - engine: engine, - } -} - -// HandleCommand обрабатывает одну команду -func (h *CommandHandler) HandleCommand(input string) (bool, error) { - // Удаляем лишние пробелы - input = strings.TrimSpace(input) - - // Если ввод пустой, просто возвращаемся без вывода - if input == "" { - return false, nil - } - - // Разбиваем на части для проверки команды выхода - parts := strings.Fields(input) - if len(parts) == 0 { - return false, nil - } - - command := strings.ToLower(parts[0]) - - // Проверяем команду выхода - if command == "exit" || command == "quit" { - return true, nil - } - - // Выполняем команду через движок - result, err := h.engine.Execute(input) - if err != nil { - utils.PrintError("%v", err) - } else if result != "" { - // Если результат не пустой, выводим его без дополнительного форматирования - // так как движок уже возвращает цветной результат - fmt.Println(result) - } - - return false, nil -} - -// RunREPL запускает цикл чтения-выполнения-вывода -func (h *CommandHandler) RunREPL() error { - scanner := bufio.NewScanner(os.Stdin) - - // Проверяем, было ли восстановление из AOF - if h.engine.WasAOFRecovered() { - utils.PrintPromptMessage("State successfully recovered from AOF") - } - - utils.PrintPromptMessage("Welcome to Futriis DB. Type 'help' for command list.") - // Добавляем пустую строку после приветствия - fmt.Println() - - for { - // Выводим приглашение - fmt.Print(utils.GetPrompt()) - - // Читаем команду - if !scanner.Scan() { - break - } - - input := scanner.Text() - - // Обрабатываем команду - exit, err := h.HandleCommand(input) - if err != nil { - utils.PrintError("%v", err) - } - - if exit { - break - } - } - - if err := scanner.Err(); err != nil { - return fmt.Errorf("ошибка чтения ввода: %v", err) - } - - return nil -}