From c5df026d044d0693132aa0c8ef1c2cb94522304d Mon Sep 17 00:00:00 2001 From: Gregory Ballantine Date: Sat, 2 Dec 2023 22:16:16 -0500 Subject: [PATCH] Lots of changes --- models/benchmark.go | 5 ++- models/hardware.go | 8 +++-- models/init.go | 2 +- models/project.go | 11 ------ models/test.go | 17 +++++++++ templates/layout/navbar.tmpl | 2 +- templates/project/create.tmpl | 25 ------------- templates/project/view.tmpl | 13 ------- templates/test/create.tmpl | 25 +++++++++++++ templates/{project => test}/list.tmpl | 8 ++--- templates/test/view.tmpl | 13 +++++++ web/forms/project.go | 6 ---- web/forms/test.go | 7 ++++ web/routes.go | 12 +++---- web/routes/project.go | 51 -------------------------- web/routes/test.go | 52 +++++++++++++++++++++++++++ 16 files changed, 135 insertions(+), 122 deletions(-) delete mode 100644 models/project.go create mode 100644 models/test.go delete mode 100644 templates/project/create.tmpl delete mode 100644 templates/project/view.tmpl create mode 100644 templates/test/create.tmpl rename templates/{project => test}/list.tmpl (72%) create mode 100644 templates/test/view.tmpl delete mode 100644 web/forms/project.go create mode 100644 web/forms/test.go delete mode 100644 web/routes/project.go create mode 100644 web/routes/test.go 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" . }} - -
-

Create a project

- -
-
- -
- -
- -
- - -
-
- -{{ 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" . }} + +
+

Create a test

+ +
+
+ +
+ +
+ +
+ + +
+
+ +{{ 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 }} - + 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)) +}
{{ $p.Name }}{{ $p.Name }} {{ $p.CreatedAt.Format "01/02/2006 15:04am" }} {{ $p.UpdatedAt.Format "01/02/2006 15:04am" }}