90 lines
1.8 KiB
Go
90 lines
1.8 KiB
Go
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])
|
|
}
|
|
}
|
|
}
|