Got cool stuff working

This commit is contained in:
2025-03-20 08:11:41 +01:00
parent 896ac66ab0
commit 8490a8c029
12 changed files with 316 additions and 13 deletions

63
main.go
View File

@@ -1,18 +1,71 @@
package main
import "gitea.seeseepuff.be/seeseemelk/mysqlite"
import "embed"
import "log"
import (
"embed"
"gitea.seeseepuff.be/seeseemelk/mysqlite"
"github.com/gin-gonic/gin"
"html/template"
"log"
"net/http"
)
//go:embed migrations/*.sql
var migrations embed.FS
//go:embed templates/*.gohtml
var templateFS embed.FS
func main() {
log.Println("Starting...")
db, err := mysqlite.OpenDb("pcinv.db3")
if err != nil {
log.Fatalf("error opening db: %v", err)
}
defer db.Close()
defer db.MustClose()
db.MigrateDb(migrations, "migrations")
err = db.MigrateDb(migrations, "migrations")
if err != nil {
log.Fatalf("error migrating db: %v", err)
}
app := &App{
db: db,
}
templates, err := template.New("undefined.gohtml").
Funcs(template.FuncMap{
"statusText": http.StatusText,
}).
ParseFS(templateFS, "templates/*.gohtml")
if err != nil {
log.Fatalf("error parsing templates: %v", err)
}
r := gin.Default()
r.SetHTMLTemplate(templates)
r.StaticFS("/static", staticFiles)
r.Use(errorHandler)
r.GET("/", app.getIndex)
r.GET("/device", app.getDevice)
err = r.Run()
if err != nil {
log.Fatalf("error serving website: %v", err)
}
}
type ErrorVM struct {
Errors []*gin.Error
StatusCode int
}
func errorHandler(c *gin.Context) {
c.Next()
if len(c.Errors) != 0 {
vm := ErrorVM{
Errors: c.Errors,
StatusCode: c.Writer.Status(),
}
c.HTML(vm.StatusCode, "errors", vm)
}
}