Finishing the test/edit route
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending

This commit is contained in:
Gregory Ballantine
2025-10-02 11:28:56 -04:00
parent abc4abe80e
commit 352950467c
4 changed files with 19 additions and 10 deletions

View File

@@ -1,7 +1,6 @@
package models package models
import ( import (
"fmt"
"strconv" "strconv"
"gorm.io/gorm" "gorm.io/gorm"
@@ -32,13 +31,8 @@ func (t *Test) SelectedBenchmarks() []string {
return ids return ids
} }
func (t *Test) IsBenchmarkSelected(benchmarkID string) bool { func (t *Test) IsBenchmarkSelected(benchmarkID uint) bool {
benchmarkConv, err := strconv.ParseUint(benchmarkID, 10, 0) benchmarkUint := uint(benchmarkID)
if err != nil {
fmt.Println("Error parsing Uint: ", err)
}
benchmarkUint := uint(benchmarkConv)
for _, b := range t.Benchmarks { for _, b := range t.Benchmarks {
if b.ID == benchmarkUint { if b.ID == benchmarkUint {

View File

@@ -4,5 +4,15 @@ type TestForm struct {
Name string `form:"test_name" validate:"required"` Name string `form:"test_name" validate:"required"`
Description string `form:"test_description"` Description string `form:"test_description"`
Hardware int `form:"test_hardware" validate:"required"` 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
} }

View File

@@ -54,6 +54,7 @@ func RegisterRoutes(f *flamego.Flame) {
f.Group("/{test_id}", func() { f.Group("/{test_id}", func() {
f.Get("", routes.TestGetView) f.Get("", routes.TestGetView)
f.Get("/edit", routes.TestGetEdit) f.Get("/edit", routes.TestGetEdit)
f.Post("/edit", binding.Form(forms.TestForm{}), routes.TestPostEdit)
}) })
}) })

View File

@@ -141,7 +141,11 @@ func TestPostEdit(c flamego.Context, form forms.TestForm, errs binding.Errors) {
// removed associated benchmarks that weren't in the form // removed associated benchmarks that weren't in the form
for _, b := range test.Benchmarks { 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)) c.Redirect(fmt.Sprintf("/test/%d", test.ID))