65 lines
1.0 KiB
Go
65 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"html/template"
|
|
"io"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
"github.com/labstack/echo/v4/middleware"
|
|
"github.com/labstack/gommon/log"
|
|
)
|
|
|
|
type Templates struct {
|
|
templates *template.Template
|
|
}
|
|
|
|
func (t *Templates) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
|
|
return t.templates.ExecuteTemplate(w, name, data)
|
|
}
|
|
|
|
func NewTemplates() *Templates {
|
|
return &Templates{
|
|
templates: template.Must(template.ParseGlob("views/*.html")),
|
|
}
|
|
}
|
|
|
|
type Page struct {
|
|
Boxes map[int]bool
|
|
}
|
|
|
|
func newPage(boxes map[int]bool) Page {
|
|
return Page{
|
|
Boxes: boxes,
|
|
}
|
|
}
|
|
|
|
var (
|
|
e = echo.New()
|
|
)
|
|
|
|
func main() {
|
|
e.Renderer = NewTemplates()
|
|
|
|
e.Logger.SetLevel(log.DEBUG)
|
|
e.Use(middleware.Logger())
|
|
|
|
e.GET("/health", healthCheck)
|
|
|
|
e.Static("/css", "css")
|
|
e.Static("/js", "js")
|
|
|
|
e.GET("/", func(c echo.Context) error {
|
|
return c.Render(200, "index", newPage(getBoxes()))
|
|
})
|
|
|
|
e.GET("/ws", initWs)
|
|
|
|
e.Logger.Fatal(e.Start(":54321"))
|
|
|
|
defer db.Close()
|
|
}
|
|
|
|
func healthCheck(c echo.Context) error {
|
|
return c.String(200, "OK")
|
|
}
|