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" . }}
+
+
+
+{{ 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
+
+
+
+
+ Title |
+ Created at |
+ Last updated |
+
+
+
+ {{ range $p := .projects }}
+
+ {{ $p.Name }} |
+ {{ $p.CreatedAt.Format "01/02/2006 15:04am" }} |
+ {{ $p.UpdatedAt.Format "01/02/2006 15:04am" }} |
+
+ {{ end }}
+
+
+
+
+{{ 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")
+}