diff options
| author | Bobby <[email protected]> | 2025-12-19 18:01:24 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-12-19 18:01:24 +0530 |
| commit | b1bfec1ce2987d9fe0cc52e5ae9115977fdf8c24 (patch) | |
| tree | 7080b7dc97522ffe0837a1e0b2965489d7e67664 /utils/shortcuts/render.go | |
| parent | 767297e28d47ee9cf3722054e41caa837f0e68d2 (diff) | |
| download | lain-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.go | 38 |
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) +} |
