From 352950467cdd27e06af207bea1cd99fcea6a9d31 Mon Sep 17 00:00:00 2001 From: Gregory Ballantine Date: Thu, 2 Oct 2025 11:28:56 -0400 Subject: [PATCH] Finishing the test/edit route --- models/test.go | 10 ++-------- web/forms/test.go | 12 +++++++++++- web/routes.go | 1 + web/routes/test.go | 6 +++++- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/models/test.go b/models/test.go index 5c72afb..e334707 100644 --- a/models/test.go +++ b/models/test.go @@ -1,7 +1,6 @@ package models import ( - "fmt" "strconv" "gorm.io/gorm" @@ -32,13 +31,8 @@ func (t *Test) SelectedBenchmarks() []string { return ids } -func (t *Test) IsBenchmarkSelected(benchmarkID string) bool { - benchmarkConv, err := strconv.ParseUint(benchmarkID, 10, 0) - if err != nil { - fmt.Println("Error parsing Uint: ", err) - } - - benchmarkUint := uint(benchmarkConv) +func (t *Test) IsBenchmarkSelected(benchmarkID uint) bool { + benchmarkUint := uint(benchmarkID) for _, b := range t.Benchmarks { if b.ID == benchmarkUint { diff --git a/web/forms/test.go b/web/forms/test.go index 2d2e1ce..8981235 100644 --- a/web/forms/test.go +++ b/web/forms/test.go @@ -4,5 +4,15 @@ type TestForm struct { Name string `form:"test_name" validate:"required"` Description string `form:"test_description"` Hardware int `form:"test_hardware" validate:"required"` - Benchmarks []string `form:"test_benchmarks" validate:"required"` + Benchmarks []uint `form:"test_benchmarks" validate:"required"` +} + +func (t *TestForm) IsBenchmarkSelected(checkID uint) bool { + for _, selectedID := range t.Benchmarks { + if checkID == selectedID { + return true + } + } + + return false } diff --git a/web/routes.go b/web/routes.go index 20bbc85..c2bf527 100644 --- a/web/routes.go +++ b/web/routes.go @@ -54,6 +54,7 @@ func RegisterRoutes(f *flamego.Flame) { f.Group("/{test_id}", func() { f.Get("", routes.TestGetView) f.Get("/edit", routes.TestGetEdit) + f.Post("/edit", binding.Form(forms.TestForm{}), routes.TestPostEdit) }) }) diff --git a/web/routes/test.go b/web/routes/test.go index 86f9e3c..16ea51f 100644 --- a/web/routes/test.go +++ b/web/routes/test.go @@ -141,7 +141,11 @@ func TestPostEdit(c flamego.Context, form forms.TestForm, errs binding.Errors) { // removed associated benchmarks that weren't in the form for _, b := range test.Benchmarks { - + if ! form.IsBenchmarkSelected(b.ID) { + var benchmark models.Benchmark + models.DB.First(&benchmark, b) // find benchmark + models.DB.Model(&test).Association("Benchmarks").Delete(&benchmark) + } } c.Redirect(fmt.Sprintf("/test/%d", test.ID))