// /futriis/internal/cli/handler.go // Пакет cli реализует обработчик команд для интерактивного режима package cli import ( "fmt" "strings" "futriis/internal/engine" "futriis/pkg/utils" ) // Handler представляет обработчик команд CLI type Handler struct { prompt *Prompt engine *engine.Engine } // NewHandler создаёт новый обработчик команд func NewHandler() *Handler { return &Handler{ prompt: NewPrompt(), engine: engine.NewEngine(), } } // Engine возвращает движок базы данных func (h *Handler) Engine() *engine.Engine { return h.engine } // Run запускает основной цикл обработки команд func (h *Handler) Run() error { utils.PrintBanner() utils.PrintInfo("Добро пожаловать в Futriis DB. Введите 'help' для списка команд.\n") for { // Читаем команду input, err := h.prompt.ReadLine() if err != nil { return err } // Пропускаем пустые строки if strings.TrimSpace(input) == "" { continue } // Обрабатываем команду result, err := h.engine.Execute(input) if err != nil { utils.PrintError("Ошибка: %v", err) continue } // Выводим результат if result != "" { if result == "exit" { utils.PrintInfo("До свидания!") return nil } fmt.Println(result) } } }