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) }