Working database connection

This commit is contained in:
Kirby 2024-03-14 17:50:29 +01:00
parent 06d85229d7
commit 895fdedfe5
6 changed files with 86 additions and 2 deletions

28
Database/utils.go Normal file
View File

@ -0,0 +1,28 @@
package database
import (
"database/sql"
"fmt"
"log"
"os"
_ "github.com/go-sql-driver/mysql"
)
func dsn() string {
user := os.Getenv("DATABASE_USER")
password := os.Getenv("DATABASE_PASSWORD")
host := os.Getenv("DATABASE_HOST")
port := os.Getenv("DATABASE_PORT")
name := os.Getenv("DATABASE_NAME")
return fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", user, password, host, port, name)
}
func GetDatabaseConnection() *sql.DB {
log.Println("dsn: ", dsn())
DB_conn, err := sql.Open("mysql", dsn())
if err != nil {
log.Println("Database connection error : ", err)
}
return DB_conn
}

View File

@ -2,6 +2,8 @@ package http
import (
"fmt"
db "infra-dashboard/Database"
opsys "infra-dashboard/OS"
"io"
"log"
"net/http"
@ -18,6 +20,19 @@ func HealthHandler(w http.ResponseWriter, _ *http.Request) {
_, _ = io.WriteString(w, "OK")
}
func GetOS(w http.ResponseWriter, r *http.Request) {
t := time.Now()
db_conn := db.GetDatabaseConnection()
list, err := opsys.GetOS(db_conn)
if err != nil {
log.Println("Error getting OS list")
}
log.Println("list: ", list)
logRequest(t, r, 200)
fmt.Fprint(w, "Hello, World!")
}
func logRequest(t time.Time, r *http.Request, s int) {
log.Printf("%s - - %s \"%s %s %s\" %d 0 \"-\" \"%s\" %d\n",
r.Host,

32
OS/utils.go Normal file
View File

@ -0,0 +1,32 @@
package operating_system
import (
"database/sql"
"log"
)
type OS struct {
ID string `json:"id"`
Distribution string `json:"distribution"`
Version string `json:"version"`
End_of_support string `json:"end_of_support"`
}
func GetOS(db *sql.DB) ([]OS, error) {
var oses []OS
rows, err := db.Query("SELECT * FROM dashboard_os")
if err != nil {
log.Println("Error querying list of OS", err)
}
defer rows.Close()
for rows.Next() {
var os OS
err := rows.Scan(&os.ID, &os.Distribution, &os.Version, &os.End_of_support)
if err != nil {
log.Println("Error building list", err)
}
oses = append(oses, os)
}
return oses, nil
}

6
go.mod
View File

@ -4,8 +4,12 @@ go 1.20
require (
github.com/alexflint/go-arg v1.4.3
github.com/go-sql-driver/mysql v1.8.0
github.com/gorilla/mux v1.8.1
github.com/joho/godotenv v1.5.1
)
require github.com/alexflint/go-scalar v1.1.0 // indirect
require (
filippo.io/edwards25519 v1.1.0 // indirect
github.com/alexflint/go-scalar v1.1.0 // indirect
)

4
go.sum
View File

@ -1,3 +1,5 @@
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/alexflint/go-arg v1.4.3 h1:9rwwEBpMXfKQKceuZfYcwuc/7YY7tWJbFsgG5cAU/uo=
github.com/alexflint/go-arg v1.4.3/go.mod h1:3PZ/wp/8HuqRZMUUgu7I+e1qcpUbvmS258mRXkFH4IA=
github.com/alexflint/go-scalar v1.1.0 h1:aaAouLLzI9TChcPXotr6gUhq+Scr8rl0P9P4PnltbhM=
@ -5,6 +7,8 @@ github.com/alexflint/go-scalar v1.1.0/go.mod h1:LoFvNMqS1CPrMVltza4LvnGKhaSpc3oy
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/go-sql-driver/mysql v1.8.0 h1:UtktXaU2Nb64z/pLiGIxY4431SJ4/dR5cjMmlVHgnT4=
github.com/go-sql-driver/mysql v1.8.0/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=

View File

@ -26,8 +26,9 @@ func main() {
router := mux.NewRouter()
router.HandleFunc("/", h.RequestHandler)
router.HandleFunc("/", h.RequestHandler).Methods("GET")
router.HandleFunc("/healthcheck", h.HealthHandler)
router.HandleFunc("/OS", h.GetOS).Methods("GET")
log.Fatal(http.ListenAndServe(":8080", router))
}