63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
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 ApiV1BenchmarkDetails(c flamego.Context, r flamego.Render) {
|
|
// find benchmark ID from request
|
|
benchmarkID := c.Query("benchmark_id")
|
|
|
|
// find benchmark from DB
|
|
var benchmark models.Benchmark
|
|
models.DB.First(&benchmark, benchmarkID)
|
|
|
|
// return JSON response
|
|
r.JSON(200, benchmark)
|
|
}
|
|
|
|
func ApiV1ResultAdd(c flamego.Context, form forms.ResultForm, errs binding.Errors, r flamego.Render) {
|
|
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,
|
|
BenchmarkID: form.Benchmark,
|
|
AverageScore: form.AverageScore,
|
|
MinimumScore: form.MinimumScore,
|
|
MaximumScore: form.MaximumScore,
|
|
}
|
|
|
|
_ = models.DB.Create(&result)
|
|
|
|
r.JSON(200, "success")
|
|
}
|
|
|
|
func ApiV1ResultList(c flamego.Context, r flamego.Render) {
|
|
// find benchmark and test IDs from request
|
|
benchmarkID := c.Query("benchmark_id")
|
|
testID := c.Query("test_id")
|
|
|
|
// find results from the DB that match the benchmark and test
|
|
var results []models.Result
|
|
models.DB.Where("test_id = ? AND benchmark_id = ?", testID, benchmarkID).Find(&results)
|
|
|
|
// return JSON response
|
|
r.JSON(200, results)
|
|
}
|