diff --git a/models/benchmark.go b/models/benchmark.go
index 366912a..3b4c46f 100644
--- a/models/benchmark.go
+++ b/models/benchmark.go
@@ -6,7 +6,10 @@ import (
type Benchmark struct {
gorm.Model
- Name string
+ Name string
ScoringType string
Description string
+
+ // many-to-many test
+ Tests[] Test `gorm:"many2many:tests_benchmarks;"`
}
diff --git a/models/hardware.go b/models/hardware.go
index 0545c4f..ba6d46a 100644
--- a/models/hardware.go
+++ b/models/hardware.go
@@ -6,8 +6,10 @@ import (
type Hardware struct {
gorm.Model
- Name string
- Type string
- SerialNumber string
+ Name string
+ Type string
Description string
+
+ // has many tests
+ Tests[] Test
}
diff --git a/models/init.go b/models/init.go
index d4ea6e1..d44512a 100644
--- a/models/init.go
+++ b/models/init.go
@@ -21,6 +21,6 @@ func Open() {
}
// Migrate the schema
- DB.AutoMigrate(&Project{}, &Hardware{}, &Benchmark{})
+ DB.AutoMigrate(&Test{}, &Hardware{}, &Benchmark{})
log.Println("Database migrations complete.")
}
diff --git a/models/project.go b/models/project.go
deleted file mode 100644
index 09201a1..0000000
--- a/models/project.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package models
-
-import (
- "gorm.io/gorm"
-)
-
-type Project struct {
- gorm.Model
- Name string
- Description string
-}
diff --git a/models/test.go b/models/test.go
new file mode 100644
index 0000000..2e91840
--- /dev/null
+++ b/models/test.go
@@ -0,0 +1,17 @@
+package models
+
+import (
+ "gorm.io/gorm"
+)
+
+type Test struct {
+ gorm.Model
+ DateTag string
+
+ // belongs to hardware
+ HardwareID int
+ Hardware Hardware
+
+ // many-to-many benchmarks
+ Benchmarks[] Benchmark `gorm:"many2many:tests_benchmarks;"`
+}
diff --git a/templates/layout/navbar.tmpl b/templates/layout/navbar.tmpl
index 18ba9e7..dfb6f61 100644
--- a/templates/layout/navbar.tmpl
+++ b/templates/layout/navbar.tmpl
@@ -4,7 +4,7 @@
BLT
diff --git a/templates/project/create.tmpl b/templates/project/create.tmpl
deleted file mode 100644
index 50606b3..0000000
--- a/templates/project/create.tmpl
+++ /dev/null
@@ -1,25 +0,0 @@
-{{ template "header" . }}
-
-
-
-{{ template "footer" . }}
diff --git a/templates/project/view.tmpl b/templates/project/view.tmpl
deleted file mode 100644
index bcf654c..0000000
--- a/templates/project/view.tmpl
+++ /dev/null
@@ -1,13 +0,0 @@
-{{ template "header" . }}
-
-
-
{{ .project.Name }}
-
-
{{ .project.Description }}
-
-
-
-
Back
-
-
-{{ template "footer" . }}
diff --git a/templates/test/create.tmpl b/templates/test/create.tmpl
new file mode 100644
index 0000000..080a3f4
--- /dev/null
+++ b/templates/test/create.tmpl
@@ -0,0 +1,25 @@
+{{ template "header" . }}
+
+
+
+{{ template "footer" . }}
diff --git a/templates/project/list.tmpl b/templates/test/list.tmpl
similarity index 72%
rename from templates/project/list.tmpl
rename to templates/test/list.tmpl
index ffa7568..ef02c56 100644
--- a/templates/project/list.tmpl
+++ b/templates/test/list.tmpl
@@ -1,8 +1,8 @@
{{ template "header" . }}
-
Projects
-
Create a new project
+
Tests
+
Create a new test
@@ -13,9 +13,9 @@
- {{ range $p := .projects }}
+ {{ range $p := .tests }}
- {{ $p.Name }} |
+ {{ $p.Name }} |
{{ $p.CreatedAt.Format "01/02/2006 15:04am" }} |
{{ $p.UpdatedAt.Format "01/02/2006 15:04am" }} |
diff --git a/templates/test/view.tmpl b/templates/test/view.tmpl
new file mode 100644
index 0000000..3fcc6d1
--- /dev/null
+++ b/templates/test/view.tmpl
@@ -0,0 +1,13 @@
+{{ template "header" . }}
+
+
+
{{ .test.Name }}
+
+
{{ .test.Description }}
+
+
+
+
Back
+
+
+{{ template "footer" . }}
diff --git a/web/forms/project.go b/web/forms/project.go
deleted file mode 100644
index 35a1738..0000000
--- a/web/forms/project.go
+++ /dev/null
@@ -1,6 +0,0 @@
-package forms
-
-type ProjectForm struct {
- Name string `form:"project_name" validate:"required"`
- Description string `form:"project_description"`
-}
diff --git a/web/forms/test.go b/web/forms/test.go
new file mode 100644
index 0000000..b9de831
--- /dev/null
+++ b/web/forms/test.go
@@ -0,0 +1,7 @@
+package forms
+
+type TestForm struct {
+ DateTag string `form:"test_date_tag" validate:"required"`
+ Hardware int `form:"test_hardware" validate:"required"`
+ Benchmarks []string `form:"test_benchmarks" validate:"required"`
+}
diff --git a/web/routes.go b/web/routes.go
index 43118a2..51f5162 100644
--- a/web/routes.go
+++ b/web/routes.go
@@ -12,15 +12,15 @@ func RegisterRoutes(f *flamego.Flame) {
// index routes
f.Get("/", routes.GetDashboard)
- // project routes
- f.Group("/project", func() {
+ // test routes
+ f.Group("/test", func() {
f.Get("", func(c flamego.Context) {
- c.Redirect("/project/list")
+ c.Redirect("/test/list")
})
- f.Get("/list", routes.ProjectGetList)
+ f.Get("/list", routes.TestGetList)
- f.Get("/create", routes.ProjectGetCreate)
- f.Post("/create", binding.Form(forms.ProjectForm{}), routes.ProjectPostCreate)
+ f.Get("/create", routes.TestGetCreate)
+ f.Post("/create", binding.Form(forms.TestForm{}), routes.TestPostCreate)
})
}
diff --git a/web/routes/project.go b/web/routes/project.go
deleted file mode 100644
index fa78958..0000000
--- a/web/routes/project.go
+++ /dev/null
@@ -1,51 +0,0 @@
-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 ProjectGetList(t template.Template, data template.Data) {
- // add projects to template
- var projects []models.Project
- models.DB.Find(&projects)
- data["projects"] = projects
-
- data["title"] = "List of Projects"
- t.HTML(http.StatusOK, "project/list")
-}
-
-func ProjectGetCreate(t template.Template, data template.Data) {
- data["title"] = "Create a Project"
- t.HTML(http.StatusOK, "project/create")
-}
-
-func ProjectPostCreate(c flamego.Context, form forms.ProjectForm, 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)
- }
-
- project := models.Project{
- Name: form.Name,
- Description: form.Description,
- }
- _ = models.DB.Create(&project)
-
- c.Redirect(fmt.Sprintf("/project/%d", project.ID))
-}
diff --git a/web/routes/test.go b/web/routes/test.go
new file mode 100644
index 0000000..a2c4c30
--- /dev/null
+++ b/web/routes/test.go
@@ -0,0 +1,52 @@
+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 TestGetList(t template.Template, data template.Data) {
+ // add tests to template
+ var tests []models.Test
+ models.DB.Find(&tests)
+ data["tests"] = tests
+
+ data["title"] = "List of Tests"
+ t.HTML(http.StatusOK, "test/list")
+}
+
+func TestGetCreate(t template.Template, data template.Data) {
+ data["title"] = "Create a Test"
+ t.HTML(http.StatusOK, "test/create")
+}
+
+func TestPostCreate(c flamego.Context, form forms.TestForm, 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)
+ }
+
+ test := models.Test{
+ DateTag: form.DateTag,
+ HardwareID: form.Hardware,
+ }
+
+ _ = models.DB.Create(&test)
+
+ c.Redirect(fmt.Sprintf("/test/%d", test.ID))
+}