Files
controle-de-estoque-cli/internal/cli/app.go
T

59 lines
1.1 KiB
Go
Raw Normal View History

2026-07-15 18:47:19 -03:00
package cli
import (
"bufio"
"controle-de-estoque/internal/service"
"fmt"
"os"
"strings"
)
// App representa a aplicação de linha de comando.
// Ele faz o papel de "controller" + "router": lê a entrada do usuário,
// decide qual ação executar e chama o service correspondente.
type App struct {
service *service.InventorySevice
reader *bufio.Scanner
}
func NewApp(s *service.InventorySevice) *App {
return &App{
service: s,
reader: bufio.NewScanner(os.Stdin),
}
}
func (a *App) Run() {
for {
ShowMenu()
if !a.reader.Scan() {
return
}
input := strings.TrimSpace(a.reader.Text())
switch strings.ToLower(input) {
case "1", "adicionar":
a.handleAdd()
case "2", "listar":
a.handleList()
case "3", "atualizar":
a.handleUpdate()
case "4", "deletar":
a.handleDelete()
case "0", "sair":
fmt.Println("Saindo...")
return
default:
fmt.Println("Opção inválida, tente novamente.")
}
}
}
// Helper para pedir e ler uma linha de texto do usuário.
func (a *App) readLine(msg string) string {
fmt.Print(msg)
a.reader.Scan()
return strings.TrimSpace(a.reader.Text())
}