Continued work on the test/edit post routet
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
This commit is contained in:
@@ -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
|
||||||
|
}
|
||||||
|
@@ -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))
|
||||||
|
Reference in New Issue
Block a user