fisch/main.go
2025-03-04 20:18:55 +01:00

112 lines
2.7 KiB
Go
Executable file

package main
import (
"log"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/template/html/v2"
)
func main() {
engine := html.New("views", ".html")
app := fiber.New(fiber.Config{
Views: engine,
})
app.Static("/", "static")
navItems := []NavItem{
NewNavItem("Suche", "/search"),
NewNavItem("Verwaltung", "/admin"),
}
conn := Connect()
app.Get("/", func(c *fiber.Ctx) error {
return c.Render("search", fiber.Map{
"Title": "Suche",
"Stylenames": NewStyleItemList("colors", "main", "search"),
"NavItems": navItems,
"ActivePage": "/search",
"SearchResultCount": -1,
})
})
app.Get("/search", func(c *fiber.Ctx) error {
return c.Render("search", fiber.Map{
"Title": "Suche",
"Stylenames": NewStyleItemList("colors", "main", "search"),
"NavItems": navItems,
"ActivePage": "/search",
"SearchResultCount": -1,
})
})
app.Post("/search", func(c *fiber.Ctx) error {
return c.Render("search", fiber.Map{
"Title": "Suche",
"Stylenames": NewStyleItemList("colors", "main", "search"),
"NavItems": navItems,
"ActivePage": "/search",
"SearchResultCount": 0,
})
})
app.Get("/admin", func(c *fiber.Ctx) error {
return c.Render("admin/tables", fiber.Map{
"Title": "Verwaltung",
"Stylenames": NewStyleItemList("colors", "main", "tables"),
"NavItems": navItems,
"ActivePage": "/admin",
"Tables": []NavItem{
NewNavItem("Orte", "locations"),
NewNavItem("Behälter", "containers"),
NewNavItem("Teile", "parts"),
},
})
})
app.Get("/admin/locations/overview", func(c *fiber.Ctx) error {
locations, err := conn.QueryLocations()
if err != nil {
return err
}
table := ToTable[*Location](locations, TableColumns{
"ID",
"Übergeordneter Ort",
"Name",
"Beschreibung",
})
return c.Render("admin/overview", fiber.Map{
"Title": "Verwaltung",
"Stylenames": NewStyleItemList("colors", "main", "overview"),
"NavItems": navItems,
"ActivePage": "/admin",
"Table": "locations",
"Columns": table.Collumns,
"Rows": table.Rows,
})
})
app.Get("/admin/containers/overview", func(c *fiber.Ctx) error {
return c.Render("admin/overview", fiber.Map{
"Title": "Verwaltung",
"Stylenames": NewStyleItemList("colors", "main", "overview"),
"NavItems": navItems,
"ActivePage": "/admin",
})
})
app.Get("/admin/parts/overview", func(c *fiber.Ctx) error {
return c.Render("admin/overview", fiber.Map{
"Title": "Verwaltung",
"Stylenames": NewStyleItemList("colors", "main", "overview"),
"NavItems": navItems,
"ActivePage": "/admin",
})
})
log.Fatal(app.Listen(":3000"))
}