From 19670e9abd7af398a57ddf95f0e03bdd2f02ae5e Mon Sep 17 00:00:00 2001 From: Gregory Ballantine Date: Mon, 27 Nov 2023 23:41:48 -0500 Subject: [PATCH] Added models; started working on project routes --- models/benchmark.go | 12 ++++++++++++ models/hardware.go | 13 +++++++++++++ models/init.go | 8 ++++++-- templates/project/create.tmpl | 25 +++++++++++++++++++++++++ templates/project/list.tmpl | 27 +++++++++++++++++++++++++++ templates/project/view.tmpl | 13 +++++++++++++ web/routes.go | 11 +++++++++++ web/routes/project.go | 24 ++++++++++++++++++++++++ 8 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 models/benchmark.go create mode 100644 models/hardware.go create mode 100644 templates/project/create.tmpl create mode 100644 templates/project/list.tmpl create mode 100644 templates/project/view.tmpl create mode 100644 web/routes/project.go diff --git a/models/benchmark.go b/models/benchmark.go new file mode 100644 index 0000000..366912a --- /dev/null +++ b/models/benchmark.go @@ -0,0 +1,12 @@ +package models + +import ( + "gorm.io/gorm" +) + +type Benchmark struct { + gorm.Model + Name string + ScoringType string + Description string +} diff --git a/models/hardware.go b/models/hardware.go new file mode 100644 index 0000000..0545c4f --- /dev/null +++ b/models/hardware.go @@ -0,0 +1,13 @@ +package models + +import ( + "gorm.io/gorm" +) + +type Hardware struct { + gorm.Model + Name string + Type string + SerialNumber string + Description string +} diff --git a/models/init.go b/models/init.go index f2af0d9..dd83c06 100644 --- a/models/init.go +++ b/models/init.go @@ -7,14 +7,18 @@ import ( "gorm.io/driver/sqlite" ) +var ( + DB *gorm.DB +) + func InitDatabase() { // Initialize database object - db, err := gorm.Open(sqlite.Open("data/blt.db"), &gorm.Config{}) + DB, err := gorm.Open(sqlite.Open("data/blt.db"), &gorm.Config{}) if err != nil { panic("Failed to connect database") } // Migrate the schema - db.AutoMigrate(&Project{}) + DB.AutoMigrate(&Project{}, &Hardware{}, &Benchmark{}) log.Println("Database migrations complete.") } diff --git a/templates/project/create.tmpl b/templates/project/create.tmpl new file mode 100644 index 0000000..d79aa07 --- /dev/null +++ b/templates/project/create.tmpl @@ -0,0 +1,25 @@ +{{ template "header" . }} + +
+

Add a project

+ +
+
+ +
+ +
+ +
+ + +
+
+ +{{ template "footer" . }} diff --git a/templates/project/list.tmpl b/templates/project/list.tmpl new file mode 100644 index 0000000..320f92a --- /dev/null +++ b/templates/project/list.tmpl @@ -0,0 +1,27 @@ +{{ template "header" . }} + +
+

Projects

+ Add a project + + + + + + + + + + + {{ range $p := .projects }} + + + + + + {{ end }} + +
TitleCreated atLast updated
{{ $p.Name }}{{ $p.CreatedAt.Format "01/02/2006 15:04am" }}{{ $p.UpdatedAt.Format "01/02/2006 15:04am" }}
+
+ +{{ template "footer" . }} diff --git a/templates/project/view.tmpl b/templates/project/view.tmpl new file mode 100644 index 0000000..bcf654c --- /dev/null +++ b/templates/project/view.tmpl @@ -0,0 +1,13 @@ +{{ template "header" . }} + +
+

{{ .project.Name }}

+ +

{{ .project.Description }}

+ +
+ +

Back

+
+ +{{ template "footer" . }} diff --git a/web/routes.go b/web/routes.go index 382047e..d11527d 100644 --- a/web/routes.go +++ b/web/routes.go @@ -9,4 +9,15 @@ import ( func RegisterRoutes(f *flamego.Flame) { // index routes f.Get("/", routes.GetDashboard) + + // project routes + f.Group("/project", func() { + f.Get("", func(c flamego.Context) { + c.Redirect("/project/list") + }) + + f.Get("/list", routes.ProjectGetList) + + f.Get("/create", routes.ProjectGetCreate) + }) } diff --git a/web/routes/project.go b/web/routes/project.go new file mode 100644 index 0000000..4f8dd99 --- /dev/null +++ b/web/routes/project.go @@ -0,0 +1,24 @@ +package routes + +import ( + "net/http" + + "github.com/flamego/template" + + "git.metaunix.net/bitgoblin/blt/models" +) + +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") +}