refatorando a arquitetura
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
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())
|
||||
}
|
||||
Reference in New Issue
Block a user