From fd66449c28cfcdc999cfde1743a8fd2292a4f803 Mon Sep 17 00:00:00 2001 From: Gregory Ballantine Date: Thu, 2 Oct 2025 16:18:40 -0400 Subject: [PATCH] Added ability to edit tests and hardware --- templates/hardware/edit.tmpl | 34 ++++++++++++++++++++++++++++++ templates/hardware/view.tmpl | 2 ++ templates/test/view.tmpl | 8 ++++++-- web/routes.go | 3 +++ web/routes/hardware.go | 40 ++++++++++++++++++++++++++++++++++++ web/routes/test.go | 2 ++ 6 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 templates/hardware/edit.tmpl 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" . }} + +
+

Add new hardware

+ +
+
+
+ +
+ +
+ +
+
+ + +
+
+ +{{ 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)) }