Added result creation route
This commit is contained in:
parent
fa92321176
commit
958c72ee63
@ -6,18 +6,19 @@ import (
|
|||||||
|
|
||||||
type Result struct {
|
type Result struct {
|
||||||
gorm.Model
|
gorm.Model
|
||||||
Name string
|
AverageScore float
|
||||||
Description string
|
MinimumScore float
|
||||||
|
MaximumScore float
|
||||||
|
|
||||||
// belongs to Hardware
|
// belongs to Hardware
|
||||||
HardwareID int
|
HardwareID int
|
||||||
Hardware Hardware
|
Hardware Hardware
|
||||||
|
|
||||||
// belongs to Benchmark
|
// belongs to Benchmark
|
||||||
BenchmarkID int
|
BenchmarkID int
|
||||||
Benchmark Benchmark
|
Benchmark Benchmark
|
||||||
|
|
||||||
// belongs to Test
|
// belongs to Test
|
||||||
TestID int
|
TestID int
|
||||||
Test Test
|
Test Test
|
||||||
}
|
}
|
||||||
|
@ -22,23 +22,35 @@
|
|||||||
<form class="u-full-width" action="/result/add" method="POST">
|
<form class="u-full-width" action="/result/add" method="POST">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="columns four">
|
<div class="columns four">
|
||||||
<select class="u-full-width" name="result_benchmark">
|
<label for="result_benchmark">
|
||||||
{{ range $bm := .test.Benchmarks }}
|
Benchmark:
|
||||||
<option value="{{ $bm.ID }}">{{ $bm.Name }}</option>
|
<select id="result_benchmark" class="u-full-width" name="result_benchmark">
|
||||||
{{ end }}
|
{{ range $bm := .test.Benchmarks }}
|
||||||
</select>
|
<option value="{{ $bm.ID }}">{{ $bm.Name }}</option>
|
||||||
|
{{ end }}
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="columns two">
|
<div class="columns two">
|
||||||
<input class="u-full-width" type="number" name="result_avg" value="0">
|
<label for="result_avg">
|
||||||
|
Average score:
|
||||||
|
<input id="result_avg" class="u-full-width" type="number" name="result_avg" value="0">
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="columns two">
|
<div class="columns two">
|
||||||
<input class="u-full-width" type="number" name="result_min" value="0">
|
<label for="result_min">
|
||||||
|
Minimum score:
|
||||||
|
<input id="result_min" class="u-full-width" type="number" name="result_min" value="0">
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="columns two">
|
<div class="columns two">
|
||||||
<input class="u-full-width" type="number" name="result_max" value="0">
|
<label for="result_max">
|
||||||
|
Maximum score:
|
||||||
|
<input id="result_max" class="u-full-width" type="number" name="result_max" value="0">
|
||||||
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="columns two">
|
<div class="columns two">
|
||||||
|
10
web/forms/result.go
Normal file
10
web/forms/result.go
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package forms
|
||||||
|
|
||||||
|
type ResultForm struct {
|
||||||
|
Test uint `form:"result_test" validate:"required"`
|
||||||
|
Hardware uint `form:"result_hardware" validate:"required"`
|
||||||
|
Benchmark uint `form:"result_benchmark" validate:"required"`
|
||||||
|
AverageScore float `form:"result_avg" validate:"required"`
|
||||||
|
MinimumScore float `form:"result_min"`
|
||||||
|
MaximumScore float `form:"result_max"`
|
||||||
|
}
|
@ -53,4 +53,9 @@ func RegisterRoutes(f *flamego.Flame) {
|
|||||||
|
|
||||||
f.Get("/{test_id}", routes.TestGetView)
|
f.Get("/{test_id}", routes.TestGetView)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// result routes
|
||||||
|
f.Group("/result", func() {
|
||||||
|
f.Post("/add", routes.ResultPostCreate)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
38
web/routes/result.go
Normal file
38
web/routes/result.go
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
package routes
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/flamego/binding"
|
||||||
|
"github.com/flamego/flamego"
|
||||||
|
"github.com/flamego/validator"
|
||||||
|
|
||||||
|
"git.metaunix.net/bitgoblin/blt/models"
|
||||||
|
"git.metaunix.net/bitgoblin/blt/web/forms"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPostCreate(c flamego.Context, form forms.ResultForm, 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)
|
||||||
|
}
|
||||||
|
|
||||||
|
result := models.Result{
|
||||||
|
TestID: form.Test,
|
||||||
|
HardwareID: form.Hardware,
|
||||||
|
BenchmarkID: form.Benchmark,
|
||||||
|
AverageScore: form.AverageScore,
|
||||||
|
MinimumScore: form.MinimumScore,
|
||||||
|
MaximumScore: form.MaximumScore,
|
||||||
|
}
|
||||||
|
|
||||||
|
_ = models.DB.Create(&result)
|
||||||
|
|
||||||
|
c.Redirect(fmt.Sprintf("/test/%d", result.TestID))
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user