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()) }