diff --git a/templates/benchmark/create.tmpl b/templates/benchmark/create.tmpl
new file mode 100644
index 0000000..63018c6
--- /dev/null
+++ b/templates/benchmark/create.tmpl
@@ -0,0 +1,38 @@
+{{ template "header" . }}
+
+
+
Add new benchmark
+
+
+
+
+{{ template "footer" . }}
diff --git a/templates/benchmark/list.tmpl b/templates/benchmark/list.tmpl
new file mode 100644
index 0000000..2cb60b9
--- /dev/null
+++ b/templates/benchmark/list.tmpl
@@ -0,0 +1,27 @@
+{{ template "header" . }}
+
+
+
Benchmark
+
Add new benchmark
+
+
+
+
+ Name |
+ Created at |
+ Last updated |
+
+
+
+ {{ range $h := .benchmark }}
+
+ {{ $h.Name }} |
+ {{ $h.CreatedAt.Format "01/02/2006 15:04am" }} |
+ {{ $h.UpdatedAt.Format "01/02/2006 15:04am" }} |
+
+ {{ end }}
+
+
+
+
+{{ template "footer" . }}
diff --git a/templates/benchmark/view.tmpl b/templates/benchmark/view.tmpl
new file mode 100644
index 0000000..12edddf
--- /dev/null
+++ b/templates/benchmark/view.tmpl
@@ -0,0 +1,19 @@
+{{ template "header" . }}
+
+
+
{{ .benchmark.Name }}
+
+
{{ .benchmark.ScoringType }}
+
+
+
+
Latest Benchmark Results:
+
+
There are currently no results recorded using this benchmark.
+
+
+
+
Back
+
+
+{{ template "footer" . }}
diff --git a/web/forms/benchmark.go b/web/forms/benchmark.go
new file mode 100644
index 0000000..6b43f08
--- /dev/null
+++ b/web/forms/benchmark.go
@@ -0,0 +1,7 @@
+package forms
+
+type BenchmarkForm struct {
+ Name string `form:"benchmark_name" validate:"required"`
+ ScoringType string `form:"benchmark_scoring" validate:"required"`
+ Description string `form:"benchmark_description"`
+}
diff --git a/web/routes.go b/web/routes.go
index 66ae07b..69cef84 100644
--- a/web/routes.go
+++ b/web/routes.go
@@ -26,6 +26,20 @@ func RegisterRoutes(f *flamego.Flame) {
f.Get("/{hardware_id}", routes.HardwareGetView)
})
+ // benchmark routes
+ f.Group("/benchmark", func() {
+ f.Get("", func(c flamego.Context) {
+ c.Redirect("/benchmark/list")
+ })
+
+ f.Get("/list", routes.BenchmarkGetList)
+
+ f.Get("/create", routes.BenchmarkGetCreate)
+ f.Post("/create", binding.Form(forms.BenchmarkForm{}), routes.BenchmarkPostCreate)
+
+ f.Get("/{benchmark_id}", routes.BenchmarkGetView)
+ })
+
// test routes
f.Group("/test", func() {
f.Get("", func(c flamego.Context) {
diff --git a/web/routes/benchmark.go b/web/routes/benchmark.go
new file mode 100644
index 0000000..2e02911
--- /dev/null
+++ b/web/routes/benchmark.go
@@ -0,0 +1,65 @@
+package routes
+
+import (
+ "fmt"
+ "log"
+ "net/http"
+
+ "github.com/flamego/binding"
+ "github.com/flamego/flamego"
+ "github.com/flamego/template"
+ "github.com/flamego/validator"
+
+ "git.metaunix.net/bitgoblin/blt/models"
+ "git.metaunix.net/bitgoblin/blt/web/forms"
+)
+
+func HardwareGetList(t template.Template, data template.Data) {
+ // add hardwares to template
+ var hardware []models.Hardware
+ models.DB.First(&hardware)
+ data["hardware"] = hardware
+
+ data["title"] = "List of Hardware"
+ t.HTML(http.StatusOK, "hardware/list")
+}
+
+func HardwareGetView(c flamego.Context, t template.Template, data template.Data) {
+ // find hardware ID from request
+ hardwareID := c.Param("hardware_id")
+
+ // find hardware from DB
+ var hardware models.Hardware
+ models.DB.Find(&hardware, hardwareID)
+ data["hardware"] = hardware
+
+ data["title"] = hardware.Name
+ t.HTML(http.StatusOK, "hardware/view")
+}
+
+func HardwareGetCreate(t template.Template, data template.Data) {
+ data["title"] = "Add New Hardware"
+ t.HTML(http.StatusOK, "hardware/create")
+}
+
+func HardwarePostCreate(c flamego.Context, form forms.HardwareForm, 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)
+ }
+
+ hardware := models.Hardware{
+ Name: form.Name,
+ Type: form.Type,
+ }
+
+ _ = models.DB.Create(&hardware)
+
+ c.Redirect(fmt.Sprintf("/hardware/%d", hardware.ID))
+}
diff --git a/web/routes/hardware.go b/web/routes/hardware.go
index 2e02911..88ad512 100644
--- a/web/routes/hardware.go
+++ b/web/routes/hardware.go
@@ -15,13 +15,13 @@ import (
)
func HardwareGetList(t template.Template, data template.Data) {
- // add hardwares to template
- var hardware []models.Hardware
- models.DB.First(&hardware)
- data["hardware"] = hardware
+ // add benchmarks to template
+ var benchmarks []models.Benchmark
+ models.DB.First(&benchmarks)
+ data["benchmarks"] = benchmarks
- data["title"] = "List of Hardware"
- t.HTML(http.StatusOK, "hardware/list")
+ data["title"] = "List of Benchmarks"
+ t.HTML(http.StatusOK, "benchmark/list")
}
func HardwareGetView(c flamego.Context, t template.Template, data template.Data) {