diff --git a/Database/package.go b/Database/package.go index f34694e..d13a00b 100644 --- a/Database/package.go +++ b/Database/package.go @@ -44,13 +44,24 @@ func GetPackagebyID(db *sql.DB, id int64) (Package, error) { return pkg, nil } -func checkIfPackageExists(pkg Package, db *sql.DB) bool { - row := db.QueryRow("Select name from dashboard_package where name = ?", pkg.Name) - err := row.Scan(&pkg.Name) - if !errors.Is(err, sql.ErrNoRows) { - return true +func GetPackagebyName(db *sql.DB, id int64) (Package, error) { + var pkg Package + if err := db.QueryRow("SELECT * FROM dashboard_package where name = ?", id).Scan(&pkg.ID, &pkg.Name, &pkg.Active); err != nil { + if errors.Is(err, sql.ErrNoRows) { + return pkg, nil + } + log.Println("Error getting OS by ID", err) } - return false + return pkg, nil +} + +func checkIfPackageExists(pkg Package, db *sql.DB) bool { + if err := db.QueryRow("Select name from dashboard_package where name = ?", pkg.Name).Scan(&pkg.Name); err != nil { + if errors.Is(err, sql.ErrNoRows) { + return false + } + } + return true } func CreatePackage(pkg Package, db *sql.DB) error { @@ -103,6 +114,24 @@ func DisablePackage(pkg Package, db *sql.DB) (int, error) { return 200, nil } +func EnablePackage(pkg Package, db *sql.DB) (int, error) { + if !checkIfPackageExists(pkg, db) { + log.Println("Package does not exist", pkg.Name) + return 404, nil + } + q, err := db.Prepare("UPDATE dashboard_package set active = 1 where name = ?") + if err != nil { + log.Println("Error creating query", err) + return 500, err + } + _, err = q.Exec(pkg.Name) + if err != nil { + log.Println("Error disabling Package", err) + return 500, err + } + return 200, nil +} + func DeletePackage(pkg Package, db *sql.DB) (int, error) { if !checkIfPackageExists(pkg, db) { log.Println("Package does not exist", pkg.Name) diff --git a/Http/package.go b/Http/package.go index 09b9bb7..776df67 100644 --- a/Http/package.go +++ b/Http/package.go @@ -106,6 +106,30 @@ func DisablePackage(w http.ResponseWriter, r *http.Request) { w.WriteHeader(status) } +func EnablePackage(w http.ResponseWriter, r *http.Request) { + var pkg db.Package + var err error + var status int + t := time.Now() + + 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) + pkg.Name = params["name"] + dbConn := db.GetDatabaseConnection() + defer dbConn.Close() + status, err = db.EnablePackage(pkg, dbConn) + if err != nil { + log.Println(err.Error(), "Error enabling package", pkg.Name) + } + logRequest(t, r, status) + w.WriteHeader(status) +} + func DeletePackage(w http.ResponseWriter, r *http.Request) { var pkg db.Package var err error diff --git a/main.go b/main.go index ac335c2..b779b48 100644 --- a/main.go +++ b/main.go @@ -45,6 +45,7 @@ func main() { router.HandleFunc("/packages", h.GetAllPackages).Methods("GET") router.HandleFunc("/packages/create", h.CreatePackage).Methods("POST") router.HandleFunc("/packages/disable", h.DisablePackage).Methods("POST") + router.HandleFunc("/packages/enable", h.EnablePackage).Methods("POST") router.HandleFunc("/packages/delete", h.DeletePackage).Methods("DELETE") router.HandleFunc("/packages/{id:[0-9]+}", h.GetPackagebyID).Methods("GET")