Delete internal/client/111handler.go
This commit is contained in:
parent
e0cff24ce5
commit
ed4e1347b6
@ -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
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user