This commit is contained in:
Kirby 2024-08-08 17:18:46 +02:00
parent 4ddeb76c0c
commit 0ed8d1b724
8 changed files with 68 additions and 48 deletions

View File

@ -2,6 +2,7 @@ package database
import ( import (
"database/sql" "database/sql"
"errors"
"log" "log"
"gopkg.in/guregu/null.v4" "gopkg.in/guregu/null.v4"
@ -11,7 +12,7 @@ type OS struct {
ID int `json:"id"` ID int `json:"id"`
Distribution null.String `json:"distribution"` Distribution null.String `json:"distribution"`
Version null.String `json:"version"` Version null.String `json:"version"`
End_of_support null.String `json:"end_of_support"` EndOfSupport null.String `json:"EndOfSupport"`
} }
func GetOS(db *sql.DB) ([]OS, error) { func GetOS(db *sql.DB) ([]OS, error) {
@ -20,11 +21,16 @@ func GetOS(db *sql.DB) ([]OS, error) {
if err != nil { if err != nil {
log.Println("Error querying list of OS", err) log.Println("Error querying list of OS", err)
} }
defer rows.Close() defer func(rows *sql.Rows) {
err := rows.Close()
if err != nil {
}
}(rows)
for rows.Next() { for rows.Next() {
var os OS var os OS
err := rows.Scan(&os.ID, &os.Distribution, &os.Version, &os.End_of_support) err := rows.Scan(&os.ID, &os.Distribution, &os.Version, &os.EndOfSupport)
if err != nil { if err != nil {
log.Println("Error building list", err) log.Println("Error building list", err)
} }
@ -35,8 +41,8 @@ func GetOS(db *sql.DB) ([]OS, error) {
func GetOSbyID(db *sql.DB, id int64) (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.EndOfSupport); err != nil {
if err == sql.ErrNoRows { if errors.Is(err, sql.ErrNoRows) {
return os, nil return os, nil
} }
log.Println("Error getting OS by ID", err) log.Println("Error getting OS by ID", err)
@ -83,7 +89,7 @@ func CreateOS(os OS, db *sql.DB) error {
if err != nil { if err != nil {
log.Println("Error creating query", err) log.Println("Error creating query", err)
} }
_, err = q.Exec(&os.Distribution, &os.Version, &os.End_of_support) _, err = q.Exec(&os.Distribution, &os.Version, &os.EndOfSupport)
if err != nil { if err != nil {
log.Println("Error inserting OS", err) log.Println("Error inserting OS", err)
} }

View File

@ -2,6 +2,7 @@ package database
import ( import (
"database/sql" "database/sql"
"errors"
"log" "log"
"gopkg.in/guregu/null.v4" "gopkg.in/guregu/null.v4"
@ -35,7 +36,7 @@ func GetPackage(db *sql.DB) ([]Package, error) {
func GetPackagebyID(db *sql.DB, id int64) (Package, error) { func GetPackagebyID(db *sql.DB, id int64) (Package, error) {
var pkg Package var pkg Package
if err := db.QueryRow("SELECT * FROM dashboard_package where id = ?", id).Scan(&pkg.ID, &pkg.Name, &pkg.Active); err != nil { if err := db.QueryRow("SELECT * FROM dashboard_package where id = ?", id).Scan(&pkg.ID, &pkg.Name, &pkg.Active); err != nil {
if err == sql.ErrNoRows { if errors.Is(err, sql.ErrNoRows) {
return pkg, nil return pkg, nil
} }
log.Println("Error getting OS by ID", err) log.Println("Error getting OS by ID", err)

View File

@ -8,7 +8,7 @@ import (
type Server struct { type Server struct {
ID int `json:"id"` ID int `json:"id"`
Hostname string `json:"hostname"` Hostname string `json:"hostname"`
Os_id int `json:"os_id"` OsId int `json:"OsId"`
} }
func GetServersList(db *sql.DB) ([]Server, error) { func GetServersList(db *sql.DB) ([]Server, error) {
@ -17,11 +17,16 @@ func GetServersList(db *sql.DB) ([]Server, error) {
if err != nil { if err != nil {
log.Println("Error querying servers list", err) log.Println("Error querying servers list", err)
} }
defer rows.Close() defer func(rows *sql.Rows) {
err := rows.Close()
if err != nil {
}
}(rows)
for rows.Next() { for rows.Next() {
var s Server var s Server
err := rows.Scan(&s.ID, &s.Hostname, &s.Os_id) err := rows.Scan(&s.ID, &s.Hostname, &s.OsId)
if err != nil { if err != nil {
log.Println("Error building servers list", err) log.Println("Error building servers list", err)
} }
@ -33,7 +38,10 @@ func GetServersList(db *sql.DB) ([]Server, error) {
func GetServersbyID(db *sql.DB, id int64) Server { func GetServersbyID(db *sql.DB, id int64) Server {
var s Server var s Server
rows := db.QueryRow("SELECT * FROM dashboard_server WHERE id = ?", id) rows := db.QueryRow("SELECT * FROM dashboard_server WHERE id = ?", id)
rows.Scan(&s.ID, &s.Hostname, &s.Os_id) err := rows.Scan(&s.ID, &s.Hostname, &s.OsId)
if err != nil {
return Server{}
}
return s return s
} }
@ -43,11 +51,16 @@ func GetServersbyOS(db *sql.DB, id int64) ([]Server, error) {
if err != nil { if err != nil {
log.Println("Error querying servers list by os_id", err) log.Println("Error querying servers list by os_id", err)
} }
defer rows.Close() defer func(rows *sql.Rows) {
err := rows.Close()
if err != nil {
}
}(rows)
for rows.Next() { for rows.Next() {
var s Server var s Server
err := rows.Scan(&s.ID, &s.Hostname, &s.Os_id) err := rows.Scan(&s.ID, &s.Hostname, &s.OsId)
if err != nil { if err != nil {
log.Println("Error building servers list", err) log.Println("Error building servers list", err)
} }

View File

@ -17,9 +17,9 @@ func GetDatabaseConnection() *sql.DB {
Addr: os.Getenv("DATABASE_HOST"), Addr: os.Getenv("DATABASE_HOST"),
DBName: os.Getenv("DATABASE_NAME"), DBName: os.Getenv("DATABASE_NAME"),
} }
DB_conn, err := sql.Open("mysql", cfg.FormatDSN()) DbConn, err := sql.Open("mysql", cfg.FormatDSN())
if err != nil { if err != nil {
log.Println("Database connection error : ", err) log.Println("Database connection error : ", err)
} }
return DB_conn return DbConn
} }

View File

@ -20,9 +20,9 @@ func GetOS(w http.ResponseWriter, r *http.Request) {
t := time.Now() t := time.Now()
status := 200 status := 200
db_conn := db.GetDatabaseConnection() dbConn := db.GetDatabaseConnection()
defer db_conn.Close() defer dbConn.Close()
list, err = db.GetOS(db_conn) list, err = db.GetOS(dbConn)
if err != nil { if err != nil {
log.Println("Error getting OS list") log.Println("Error getting OS list")
status = 500 status = 500
@ -40,14 +40,14 @@ func GetOSbyID(w http.ResponseWriter, r *http.Request) {
status := 200 status := 200
params := mux.Vars(r) params := mux.Vars(r)
db_conn := db.GetDatabaseConnection() dbConn := db.GetDatabaseConnection()
defer db_conn.Close() defer dbConn.Close()
id, err := strconv.ParseInt(params["id"], 10, 64) id, err := strconv.ParseInt(params["id"], 10, 64)
if err != nil { if err != nil {
log.Println("Error converting ID", err) log.Println("Error converting ID", err)
status = 500 status = 500
} }
os, err = db.GetOSbyID(db_conn, int64(id)) os, err = db.GetOSbyID(dbConn, int64(id))
if err != nil { if err != nil {
log.Println("Error getting OS") log.Println("Error getting OS")
status = 500 status = 500
@ -64,9 +64,9 @@ func GetDistributionList(w http.ResponseWriter, r *http.Request) {
t := time.Now() t := time.Now()
status := 200 status := 200
db_conn := db.GetDatabaseConnection() dbConn := db.GetDatabaseConnection()
defer db_conn.Close() defer dbConn.Close()
list, err = db.GetDistributionList(db_conn) list, err = db.GetDistributionList(dbConn)
if err != nil { if err != nil {
log.Println("Error getting distribution list") log.Println("Error getting distribution list")
status = 500 status = 500
@ -84,9 +84,9 @@ func GetVersionsByDistributionList(w http.ResponseWriter, r *http.Request) {
status := 200 status := 200
params := mux.Vars(r) params := mux.Vars(r)
db_conn := db.GetDatabaseConnection() dbConn := db.GetDatabaseConnection()
defer db_conn.Close() defer dbConn.Close()
list, err = db.GetVersionsByDistributionList(db_conn, params["distribution"]) list, err = db.GetVersionsByDistributionList(dbConn, params["distribution"])
if err != nil { if err != nil {
log.Println("Error getting distribution list") log.Println("Error getting distribution list")
status = 500 status = 500
@ -112,10 +112,10 @@ func CreateOS(w http.ResponseWriter, r *http.Request) {
json.Unmarshal(body, &params) json.Unmarshal(body, &params)
os.Distribution = params["distribution"] os.Distribution = params["distribution"]
os.Version = params["version"] os.Version = params["version"]
os.End_of_support = params["end_of_support"] os.EndOfSupport = params["end_of_support"]
db_conn := db.GetDatabaseConnection() dbConn := db.GetDatabaseConnection()
defer db_conn.Close() defer dbConn.Close()
err = db.CreateOS(os, db_conn) err = db.CreateOS(os, dbConn)
if err != nil { if err != nil {
log.Println("Error creating new OS", err) log.Println("Error creating new OS", err)
status = 500 status = 500

View File

@ -38,14 +38,14 @@ func GetPackagebyID(w http.ResponseWriter, r *http.Request) {
status := 200 status := 200
params := mux.Vars(r) params := mux.Vars(r)
db_conn := db.GetDatabaseConnection() dbConn := db.GetDatabaseConnection()
defer db_conn.Close() defer dbConn.Close()
id, err := strconv.ParseInt(params["id"], 10, 64) id, err := strconv.ParseInt(params["id"], 10, 64)
if err != nil { if err != nil {
log.Println("Error converting ID", err) log.Println("Error converting ID", err)
status = 500 status = 500
} }
pkg, err = db.GetPackagebyID(db_conn, int64(id)) pkg, err = db.GetPackagebyID(dbConn, int64(id))
if err != nil { if err != nil {
log.Println("Error getting Package") log.Println("Error getting Package")
status = 500 status = 500

View File

@ -18,9 +18,9 @@ func GetServersList(w http.ResponseWriter, r *http.Request) {
t := time.Now() t := time.Now()
status := 200 status := 200
db_conn := db.GetDatabaseConnection() dbConn := db.GetDatabaseConnection()
defer db_conn.Close() defer dbConn.Close()
list, err = db.GetServersList(db_conn) list, err = db.GetServersList(dbConn)
if err != nil { if err != nil {
log.Println("Error getting OS list") log.Println("Error getting OS list")
status = 500 status = 500
@ -43,9 +43,9 @@ func GetServersbyID(w http.ResponseWriter, r *http.Request) {
log.Println("Error converting ID", err) log.Println("Error converting ID", err)
status = 500 status = 500
} }
db_conn := db.GetDatabaseConnection() dbConn := db.GetDatabaseConnection()
defer db_conn.Close() defer dbConn.Close()
server = db.GetServersbyID(db_conn, int64(id)) server = db.GetServersbyID(dbConn, int64(id))
logRequest(t, r, status) logRequest(t, r, status)
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(server) json.NewEncoder(w).Encode(server)
@ -59,14 +59,14 @@ func GetServersbyOS(w http.ResponseWriter, r *http.Request) {
status := 200 status := 200
params := mux.Vars(r) params := mux.Vars(r)
os_id, err := strconv.ParseInt(params["os_id"], 10, 32) osId, err := strconv.ParseInt(params["os_id"], 10, 32)
if err != nil { if err != nil {
log.Println("Error converting ID", err) log.Println("Error converting ID", err)
status = 500 status = 500
} }
db_conn := db.GetDatabaseConnection() dbConn := db.GetDatabaseConnection()
defer db_conn.Close() defer dbConn.Close()
servers, err = db.GetServersbyOS(db_conn, int64(os_id)) servers, err = db.GetServersbyOS(dbConn, int64(osId))
if err != nil { if err != nil {
log.Println("Error getting servers by OS", err) log.Println("Error getting servers by OS", err)
status = 500 status = 500

View File

@ -1,4 +1,4 @@
// Receive and send informations about servers // Receive and send information about servers
package main package main
import ( import (