Working database connection
This commit is contained in:
parent
06d85229d7
commit
895fdedfe5
28
Database/utils.go
Normal file
28
Database/utils.go
Normal 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
|
||||
}
|
||||
@ -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
32
OS/utils.go
Normal 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
6
go.mod
@ -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
4
go.sum
@ -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=
|
||||
|
||||
3
main.go
3
main.go
@ -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))
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user