diff --git a/templates/hardware/edit.tmpl b/templates/hardware/edit.tmpl
new file mode 100644
index 0000000..a549bc3
--- /dev/null
+++ b/templates/hardware/edit.tmpl
@@ -0,0 +1,34 @@
+{{ template "header" . }}
+
+
+
+{{ template "footer" . }}
diff --git a/templates/hardware/view.tmpl b/templates/hardware/view.tmpl
index 38f642d..f58ae6e 100644
--- a/templates/hardware/view.tmpl
+++ b/templates/hardware/view.tmpl
@@ -3,6 +3,8 @@
{{ .hardware.Name }}
+
Edit
+
{{ .hardware.Type }}
diff --git a/templates/test/view.tmpl b/templates/test/view.tmpl
index 055fe6f..4722fb1 100644
--- a/templates/test/view.tmpl
+++ b/templates/test/view.tmpl
@@ -3,11 +3,15 @@
{{ .test.Name }}
-
Hardware tested: {{ .test.Hardware.Name }}
+
Edit
{{ .test.Description }}
-
Benchmarks used:
+
Test Info:
+
+
Hardware tested: {{ .test.Hardware.Name }}
+
+
Benchmarks used:
{{ range $bm := .test.Benchmarks }}
diff --git a/web/routes.go b/web/routes.go
index c2bf527..2dd1dac 100644
--- a/web/routes.go
+++ b/web/routes.go
@@ -24,6 +24,9 @@ func RegisterRoutes(f *flamego.Flame) {
f.Post("/create", binding.Form(forms.HardwareForm{}), routes.HardwarePostCreate)
f.Get("/{hardware_id}", routes.HardwareGetView)
+
+ f.Get("/{hardware_id}/edit", routes.HardwareGetEdit)
+ f.Post("/{hardware_id}/edit", binding.Form(forms.HardwareForm{}), routes.HardwarePostEdit)
})
// benchmark routes
diff --git a/web/routes/hardware.go b/web/routes/hardware.go
index 4bc2072..66b9617 100644
--- a/web/routes/hardware.go
+++ b/web/routes/hardware.go
@@ -63,3 +63,43 @@ func HardwarePostCreate(c flamego.Context, form forms.HardwareForm, errs binding
c.Redirect(fmt.Sprintf("/hardware/%d", hardware.ID))
}
+
+func HardwareGetEdit(c flamego.Context, t template.Template, data template.Data) {
+ // find hardware ID from request
+ hardwareID := c.Param("hardware_id")
+
+ // find hardware from DB
+ var hardware models.Hardware
+ models.DB.Preload("Tests.Benchmarks").First(&hardware, hardwareID)
+ data["hardware"] = hardware
+
+ data["title"] = "Edit Hardware"
+ t.HTML(http.StatusOK, "hardware/edit")
+}
+
+func HardwarePostEdit(c flamego.Context, form forms.HardwareForm, errs binding.Errors) {
+ if len(errs) > 0 {
+ var err error
+ switch errs[0].Category {
+ case binding.ErrorCategoryValidation:
+ err = errs[0].Err.(validator.ValidationErrors)[0]
+ default:
+ err = errs[0].Err
+ }
+ log.Fatal(err)
+ }
+
+ // find hardware ID from request
+ hardwareID := c.Param("hardware_id")
+
+ // find hardware from DB
+ var hardware models.Hardware
+ models.DB.Preload("Tests.Benchmarks").First(&hardware, hardwareID)
+
+ hardware.Name = form.Name
+ hardware.Type = form.Type
+
+ models.DB.Save(&hardware)
+
+ c.Redirect(fmt.Sprintf("/hardware/%d", hardware.ID))
+}
diff --git a/web/routes/test.go b/web/routes/test.go
index 16ea51f..0c246af 100644
--- a/web/routes/test.go
+++ b/web/routes/test.go
@@ -148,5 +148,7 @@ func TestPostEdit(c flamego.Context, form forms.TestForm, errs binding.Errors) {
}
}
+ models.DB.Save(&test)
+
c.Redirect(fmt.Sprintf("/test/%d", test.ID))
}