package main import ( "Portifolio/internal/database" "Portifolio/internal/handlers" "Portifolio/internal/shell" "bufio" "database/sql" "fmt" "log" "net/http" "os" "strings" _ "github.com/mattn/go-sqlite3" ) var db *sql.DB func main() { var err error db, err = sql.Open("sqlite3", "./app.db?_foreign_keys=on") if err != nil { log.Fatal("Failed to open database:", err) } defer db.Close() if err = db.Ping(); err != nil { log.Fatal("Failed to connect to database:", err) } database.InitDB(db) fmt.Println("Connected to SQLite database") http.HandleFunc("/health", handlers.HealthHandler(db)) http.HandleFunc("POST /add/company", handlers.AddCompanyHandler(db)) /* http.HandleFunc("GET /companies", handlers.AddCompanyHandler(db)) http.HandleFunc("GET /currencies", handlers.AddCompanyHandler(db)) */ fmt.Println("Server running on :8080") go func() { log.Fatal(http.ListenAndServe(":8080", nil)) }() runShell(db) } func runShell(db *sql.DB) { scanner := bufio.NewScanner(os.Stdin) fmt.Println("\nShell ready. Commands: add-company, help, exit") for { fmt.Print("> ") if !scanner.Scan() { break } parts := strings.Fields(scanner.Text()) if len(parts) == 0 { continue } switch parts[0] { case "add-company": shell.AddCompany(scanner, db) case "add-currency": shell.AddCurrency(scanner, db) case "list-currency": shell.ListCurrencies(db) case "help": fmt.Println("Commands:") fmt.Println(" add-company - add a new company interactively") fmt.Println(" add-currency - add a new currency interactively") fmt.Println(" list-currency - lists all currencies") fmt.Println(" exit - quit") case "exit": fmt.Println("Bye!") os.Exit(0) default: fmt.Printf("Unknown command: %s. Type 'help' for commands.\n", parts[0]) } } }