Working on distribution routes to get data
This commit is contained in:
parent
316a1996c2
commit
60d90dc4af
77
Database/os.go
Normal file
77
Database/os.go
Normal file
@ -0,0 +1,77 @@
|
||||
package database
|
||||
|
||||
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, err
|
||||
}
|
||||
|
||||
func GetOSbyID(db *sql.DB, id string) (OS, error) {
|
||||
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 == sql.ErrNoRows {
|
||||
return os, nil
|
||||
}
|
||||
log.Println("Error getting OS by ID", err)
|
||||
}
|
||||
return os, nil
|
||||
}
|
||||
|
||||
func GetDistributionList(db *sql.DB) ([]string, error) {
|
||||
var list []string
|
||||
rows, err := db.Query("SELECT DISTINCT distribution FROM dashboard_os")
|
||||
if err != nil {
|
||||
log.Println("Error getting distribution list", err)
|
||||
}
|
||||
for rows.Next() {
|
||||
var os OS
|
||||
err := rows.Scan(&os.Distribution)
|
||||
if err != nil {
|
||||
log.Println("Error building distribution list", err)
|
||||
}
|
||||
list = append(list, os.Distribution)
|
||||
}
|
||||
return list, nil
|
||||
}
|
||||
|
||||
func GetVersionByDistributionList(db *sql.DB, d string) ([]string, error) {
|
||||
var list []string
|
||||
rows, err := db.Query("SELECT DISTINCT version FROM dashboard_os where distribution = ?", d)
|
||||
if err != nil {
|
||||
log.Println("Error getting distribution list", err)
|
||||
}
|
||||
for rows.Next() {
|
||||
var os OS
|
||||
err := rows.Scan(&os.Distribution)
|
||||
if err != nil {
|
||||
log.Println("Error building distribution list", err)
|
||||
}
|
||||
list = append(list, os.Distribution)
|
||||
}
|
||||
return list, nil
|
||||
}
|
||||
@ -19,7 +19,6 @@ func dsn() string {
|
||||
}
|
||||
|
||||
func GetDatabaseConnection() *sql.DB {
|
||||
log.Println("dsn: ", dsn())
|
||||
DB_conn, err := sql.Open("mysql", dsn())
|
||||
if err != nil {
|
||||
log.Println("Database connection error : ", err)
|
||||
|
||||
@ -4,11 +4,12 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
db "infra-dashboard/Database"
|
||||
opsys "infra-dashboard/OS"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
)
|
||||
|
||||
func RequestHandler(w http.ResponseWriter, r *http.Request) {
|
||||
@ -22,7 +23,7 @@ func HealthHandler(w http.ResponseWriter, _ *http.Request) {
|
||||
}
|
||||
|
||||
func GetOS(w http.ResponseWriter, r *http.Request) {
|
||||
var list []opsys.OS
|
||||
var list []db.OS
|
||||
var err error
|
||||
|
||||
t := time.Now()
|
||||
@ -30,13 +31,70 @@ func GetOS(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
db_conn := db.GetDatabaseConnection()
|
||||
defer db_conn.Close()
|
||||
list, err = opsys.GetOS(db_conn)
|
||||
list, err = db.GetOS(db_conn)
|
||||
if err != nil {
|
||||
log.Println("Error getting OS list")
|
||||
status = 500
|
||||
}
|
||||
log.Println("list: ", list)
|
||||
logRequest(t, r, status)
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(list)
|
||||
}
|
||||
|
||||
func GetOSbyID(w http.ResponseWriter, r *http.Request) {
|
||||
var os db.OS
|
||||
var err error
|
||||
|
||||
t := time.Now()
|
||||
status := 200
|
||||
|
||||
params := mux.Vars(r)
|
||||
db_conn := db.GetDatabaseConnection()
|
||||
defer db_conn.Close()
|
||||
os, err = db.GetOSbyID(db_conn, params["id"])
|
||||
if err != nil {
|
||||
log.Println("Error getting OS")
|
||||
status = 500
|
||||
}
|
||||
logRequest(t, r, status)
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(os)
|
||||
}
|
||||
|
||||
func GetDistributionList(w http.ResponseWriter, r *http.Request) {
|
||||
var list []string
|
||||
var err error
|
||||
|
||||
t := time.Now()
|
||||
status := 200
|
||||
|
||||
db_conn := db.GetDatabaseConnection()
|
||||
defer db_conn.Close()
|
||||
list, err = db.GetDistributionList(db_conn)
|
||||
if err != nil {
|
||||
log.Println("Error getting distribution list")
|
||||
status = 500
|
||||
}
|
||||
logRequest(t, r, status)
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(list)
|
||||
}
|
||||
|
||||
func GetVersionByDistributionList(w http.ResponseWriter, r *http.Request) {
|
||||
var list []string
|
||||
var err error
|
||||
|
||||
t := time.Now()
|
||||
status := 200
|
||||
|
||||
params := mux.Vars(r)
|
||||
db_conn := db.GetDatabaseConnection()
|
||||
defer db_conn.Close()
|
||||
list, err = db.GetVersionByDistributionList(db_conn, params["distribution"])
|
||||
if err != nil {
|
||||
log.Println("Error getting distribution list")
|
||||
status = 500
|
||||
}
|
||||
logRequest(t, r, status)
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(list)
|
||||
|
||||
32
OS/utils.go
32
OS/utils.go
@ -1,32 +0,0 @@
|
||||
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, err
|
||||
}
|
||||
3
main.go
3
main.go
@ -29,6 +29,9 @@ func main() {
|
||||
router.HandleFunc("/", h.RequestHandler).Methods("GET")
|
||||
router.HandleFunc("/healthcheck", h.HealthHandler)
|
||||
router.HandleFunc("/OS", h.GetOS).Methods("GET")
|
||||
router.HandleFunc("/OS/{id}", h.GetOSbyID).Methods("GET")
|
||||
router.HandleFunc("/distribution", h.GetDistributionList).Methods("GET")
|
||||
router.HandleFunc("/distribution/{distribution}/version", h.GetVersionByDistributionList).Methods("GET")
|
||||
|
||||
log.Fatal(http.ListenAndServe(":8080", router))
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user