futriis/internal/cli/handler.go

67 lines
1.5 KiB
Go
Raw Normal View History

2026-02-23 22:48:31 +03:00
// /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)
}
}
}