summaryrefslogtreecommitdiff
path: root/utils/shortcuts/render.go
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-12-19 18:01:24 +0530
committerBobby <[email protected]>2025-12-19 18:01:24 +0530
commitb1bfec1ce2987d9fe0cc52e5ae9115977fdf8c24 (patch)
tree7080b7dc97522ffe0837a1e0b2965489d7e67664 /utils/shortcuts/render.go
parent767297e28d47ee9cf3722054e41caa837f0e68d2 (diff)
downloadlain-b1bfec1ce2987d9fe0cc52e5ae9115977fdf8c24.tar.xz
lain-b1bfec1ce2987d9fe0cc52e5ae9115977fdf8c24.zip
added utils, templates, routes, types, middleware, processors and a whole lot of things for a basic login page
Diffstat (limited to 'utils/shortcuts/render.go')
-rw-r--r--utils/shortcuts/render.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/utils/shortcuts/render.go b/utils/shortcuts/render.go
new file mode 100644
index 0000000..1efeb61
--- /dev/null
+++ b/utils/shortcuts/render.go
@@ -0,0 +1,38 @@
+package shortcuts
+
+import (
+ "maps"
+
+ "github.com/gofiber/fiber/v2"
+)
+
+func Render(ctx *fiber.Ctx, template string, data any) error {
+ bind := make(fiber.Map)
+
+ ctx.Context().VisitUserValues(func(key []byte, value any) {
+ bind[string(key)] = value
+ })
+
+ if data != nil {
+ switch v := data.(type) {
+ case map[string]any:
+ maps.Copy(bind, v)
+ case fiber.Map:
+ maps.Copy(bind, v)
+ default:
+ rv, err := structValue(data)
+ if err != nil {
+ return err
+ }
+
+ maps.Copy(bind, mapStruct(rv))
+ }
+ }
+
+ return ctx.Render(template, bind)
+}
+
+func RenderWithStatus(ctx *fiber.Ctx, template string, data any, statusCode int) error {
+ ctx.Status(statusCode)
+ return Render(ctx, template, data)
+}