adding server handling

This commit is contained in:
kirby 2024-03-22 16:00:06 +01:00
parent 29e1a09219
commit 5c14017a78
5 changed files with 120 additions and 2 deletions

View File

@ -33,7 +33,7 @@ func GetOS(db *sql.DB) ([]OS, error) {
return oses, err return oses, err
} }
func GetOSbyID(db *sql.DB, id string) (OS, error) { func GetOSbyID(db *sql.DB, id int64) (OS, error) {
var os OS var os OS
if err := db.QueryRow("SELECT * FROM dashboard_os where id = ?", id).Scan(&os.ID, &os.Distribution, &os.Version, &os.End_of_support); err != nil { if err := db.QueryRow("SELECT * FROM dashboard_os where id = ?", id).Scan(&os.ID, &os.Distribution, &os.Version, &os.End_of_support); err != nil {
if err == sql.ErrNoRows { if err == sql.ErrNoRows {

57
Database/server.go Normal file
View File

@ -0,0 +1,57 @@
package database
import (
"database/sql"
"log"
)
type Server struct {
ID int `json:"id"`
Hostname string `json:"hostname"`
Os_id int `json:"os_id"`
}
func GetServersList(db *sql.DB) ([]Server, error) {
var servers []Server
rows, err := db.Query("SELECT * FROM dashboard_server")
if err != nil {
log.Println("Error querying servers list", err)
}
defer rows.Close()
for rows.Next() {
var s Server
err := rows.Scan(&s.ID, &s.Hostname, &s.Os_id)
if err != nil {
log.Println("Error building servers list", err)
}
servers = append(servers, s)
}
return servers, err
}
func GetServersbyID(db *sql.DB, id int64) Server {
var s Server
rows := db.QueryRow("SELECT * FROM dashboard_server WHERE id = ?", id)
rows.Scan(&s.ID, &s.Hostname, &s.Os_id)
return s
}
func GetServersbyOS(db *sql.DB, id int) ([]Server, error) {
var servers []Server
rows, err := db.Query("SELECT * FROM dashboard_server WHERE os_id = ?", id)
if err != nil {
log.Println("Error querying servers list by os_id", err)
}
defer rows.Close()
for rows.Next() {
var s Server
err := rows.Scan(&s.ID, &s.Hostname, &s.Os_id)
if err != nil {
log.Println("Error building servers list", err)
}
servers = append(servers, s)
}
return servers, err
}

View File

@ -6,6 +6,7 @@ import (
"io" "io"
"log" "log"
"net/http" "net/http"
"strconv"
"time" "time"
"github.com/gorilla/mux" "github.com/gorilla/mux"
@ -41,7 +42,12 @@ func GetOSbyID(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r) params := mux.Vars(r)
db_conn := db.GetDatabaseConnection() db_conn := db.GetDatabaseConnection()
defer db_conn.Close() defer db_conn.Close()
os, err = db.GetOSbyID(db_conn, params["id"]) id, err := strconv.ParseInt(params["id"], 10, 64)
if err != nil {
log.Println("Error converting ID", err)
status = 500
}
os, err = db.GetOSbyID(db_conn, int64(id))
if err != nil { if err != nil {
log.Println("Error getting OS") log.Println("Error getting OS")
status = 500 status = 500

52
Http/server.go Normal file
View File

@ -0,0 +1,52 @@
package http
import (
"encoding/json"
db "infra-dashboard/Database"
"log"
"net/http"
"strconv"
"time"
"github.com/gorilla/mux"
)
func GetServersList(w http.ResponseWriter, r *http.Request) {
var list []db.Server
var err error
t := time.Now()
status := 200
db_conn := db.GetDatabaseConnection()
defer db_conn.Close()
list, err = db.GetServersList(db_conn)
if err != nil {
log.Println("Error getting OS list")
status = 500
}
logRequest(t, r, status)
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(list)
}
func GetServersbyID(w http.ResponseWriter, r *http.Request) {
var server db.Server
var err error
t := time.Now()
status := 200
params := mux.Vars(r)
id, err := strconv.ParseInt(params["id"], 10, 32)
if err != nil {
log.Println("Error converting ID", err)
status = 500
}
db_conn := db.GetDatabaseConnection()
defer db_conn.Close()
server = db.GetServersbyID(db_conn, int64(id))
logRequest(t, r, status)
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(server)
}

View File

@ -34,5 +34,8 @@ func main() {
router.HandleFunc("/os/distribution", h.GetDistributionList).Methods("GET") router.HandleFunc("/os/distribution", h.GetDistributionList).Methods("GET")
router.HandleFunc("/os/distribution/{distribution:[a-zA-Z]+}/versions", h.GetVersionsByDistributionList).Methods("GET") router.HandleFunc("/os/distribution/{distribution:[a-zA-Z]+}/versions", h.GetVersionsByDistributionList).Methods("GET")
router.HandleFunc("/servers", h.GetServersList).Methods("GET")
router.HandleFunc("/server/{id:[0-9]+}", h.GetServersbyID).Methods("GET")
log.Fatal(http.ListenAndServe(":8080", router)) log.Fatal(http.ListenAndServe(":8080", router))
} }