Continued work on the test/edit post routet
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed

This commit is contained in:
Gregory Ballantine
2025-08-12 11:40:56 -04:00
parent 60d8554cf1
commit 4b98322022
2 changed files with 31 additions and 10 deletions

View File

@@ -1,6 +1,7 @@
package models package models
import ( import (
"fmt"
"strconv" "strconv"
"gorm.io/gorm" "gorm.io/gorm"
@@ -30,3 +31,20 @@ func (t *Test) SelectedBenchmarks() []string {
} }
return ids 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)
for _, b := range t.Benchmarks {
if b.ID == benchmarkUint {
return true
}
}
return false
}

View File

@@ -126,19 +126,22 @@ func TestPostEdit(c flamego.Context, form forms.TestForm, errs binding.Errors) {
var test models.Test var test models.Test
models.DB.Preload("Hardware").Preload("Benchmarks").First(&test, testID) models.DB.Preload("Hardware").Preload("Benchmarks").First(&test, testID)
test := models.Test{ test.Name = form.Name
Name: form.Name, test.Description = form.Description
Description: form.Description, test.HardwareID = form.Hardware
HardwareID: form.Hardware,
// bind benchmarks to test that aren't already associated
for _, b := range form.Benchmarks {
if ! test.IsBenchmarkSelected(b) {
var benchmark models.Benchmark
models.DB.First(&benchmark, b) // find benchmark
models.DB.Model(&test).Association("Benchmarks").Append(&benchmark)
}
} }
_ = models.DB.Create(&test) // removed associated benchmarks that weren't in the form
for _, b := range test.Benchmarks {
// bind benchmarks to test
for _, v := range form.Benchmarks {
var benchmark models.Benchmark
models.DB.First(&benchmark, v) // find benchmark
models.DB.Model(&test).Association("Benchmarks").Append(&benchmark)
} }
c.Redirect(fmt.Sprintf("/test/%d", test.ID)) c.Redirect(fmt.Sprintf("/test/%d", test.ID))