From b04387d29f95b74ef30f64269cdf5a4b7477a489 Mon Sep 17 00:00:00 2001 From: Kirby Date: Thu, 8 Aug 2024 17:29:53 +0200 Subject: [PATCH] Adding createServer handling --- Database/server.go | 19 ++++++++++++++++--- Http/server.go | 29 +++++++++++++++++++++++++++++ main.go | 1 + 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/Database/server.go b/Database/server.go index 49a6e06..23c8c7b 100644 --- a/Database/server.go +++ b/Database/server.go @@ -2,13 +2,14 @@ package database import ( "database/sql" + "gopkg.in/guregu/null.v4" "log" ) type Server struct { - ID int `json:"id"` - Hostname string `json:"hostname"` - OsId int `json:"OsId"` + ID int `json:"id"` + Hostname null.String `json:"hostname"` + OsId null.String `json:"OsId"` } func GetServersList(db *sql.DB) ([]Server, error) { @@ -68,3 +69,15 @@ func GetServersbyOS(db *sql.DB, id int64) ([]Server, error) { } return servers, err } + +func CreateServer(server Server, db *sql.DB) error { + q, err := db.Prepare("INSERT INTO `dashboard_server` (hostname, os_id) VALUES (?,?)") + if err != nil { + log.Println("Error creating query", err) + } + _, err = q.Exec(server.Hostname, server.OsId) + if err != nil { + log.Println("Error inserting Server", err) + } + return err +} diff --git a/Http/server.go b/Http/server.go index 3957299..da2e82b 100644 --- a/Http/server.go +++ b/Http/server.go @@ -2,7 +2,9 @@ package http import ( "encoding/json" + "gopkg.in/guregu/null.v4" db "infra-dashboard/Database" + "io/ioutil" "log" "net/http" "strconv" @@ -75,3 +77,30 @@ func GetServersbyOS(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(servers) } + +func CreateServer(w http.ResponseWriter, r *http.Request) { + var server db.Server + var err error + + t := time.Now() + status := 204 + + body, err := ioutil.ReadAll(r.Body) + if err != nil { + log.Println(err.Error(), "Error reading request body") + } + + params := make(map[string]null.String) + json.Unmarshal(body, ¶ms) + server.Hostname = params["hostname"] + server.OsId = params["os_id"] + dbConn := db.GetDatabaseConnection() + defer dbConn.Close() + err = db.CreateServer(server, dbConn) + if err != nil { + log.Println(err.Error(), "Error creating server") + status = 500 + } + logRequest(t, r, status) + w.WriteHeader(status) +} diff --git a/main.go b/main.go index ca6987c..7607e30 100644 --- a/main.go +++ b/main.go @@ -38,6 +38,7 @@ func main() { router.HandleFunc("/servers", h.GetServersList).Methods("GET") router.HandleFunc("/server/{id:[0-9]+}", h.GetServersbyID).Methods("GET") router.HandleFunc("/server/os/{os_id:[0-9]+}", h.GetServersbyOS).Methods("GET") + router.HandleFunc("/server/create", h.CreateServer).Methods("POST") router.HandleFunc("/packages", h.GetAllPackages).Methods("GET") router.HandleFunc("/packages/{id:[0-9]+}", h.GetPackagebyID).Methods("GET")