summaryrefslogtreecommitdiff
path: root/internal/router/router.go
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'internal/router/router.go')
-rw-r--r--internal/router/router.go21
1 files changed, 19 insertions, 2 deletions
diff --git a/internal/router/router.go b/internal/router/router.go
index 700fbbf..f28add2 100644
--- a/internal/router/router.go
+++ b/internal/router/router.go
@@ -60,6 +60,7 @@ type Route interface {
ToValidateLang() LangSetting
TemplatesToInject() []string
Render(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error)
+ AddMeta(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (meta map[string]string, err error)
RenderHeader(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error)
RenderBody(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error)
RenderFooter(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error)
@@ -340,18 +341,23 @@ func (r *Router) Listen(endpoint string) error {
func (r *Router) Close() (err error) {
allErrors := make([]error, 0)
+ slog.Debug("shutting down blog trigger scheduler")
if err = r.supplements.BlogTrigger.Close(); err != nil {
allErrors = append(allErrors, fmt.Errorf("fail to shutdown blog trigger scheduler: %w", err))
}
+ slog.Debug("shutting down fiber server")
if err = r.app.Shutdown(); err != nil {
allErrors = append(allErrors, fmt.Errorf("fail to shutdown fiber server: %w", err))
}
+ slog.Debug("dumping cache")
if err = r.supplements.ClientCache.Close(); err != nil {
allErrors = append(allErrors, fmt.Errorf("fail to dump cache: %w", err))
}
+ slog.Debug("closing db connection")
if err = r.supplements.DB.Close(); err != nil {
allErrors = append(allErrors, fmt.Errorf("fail to close db connection: %w", err))
}
+ slog.Debug("closing page cache")
r.supplements.PageCache.Close()
return errors.Join(allErrors...)
}
@@ -377,11 +383,18 @@ func (r *Router) generalPage(c *fiber.Ctx, route Route, lang string) error {
return c.Status(fiber.StatusOK).Type("html").Send(val)
}
- content, err := r.supplements.TemplateManager.Render("general-page", fiber.Map{
+ valueMap := fiber.Map{
"L": r.supplements.Localization[lang],
"Lang": lang,
"QueryString": queryString,
- })
+ }
+
+ var err error
+ if valueMap["Meta"], err = route.AddMeta(c, r.supplements, lang, valueMap); err != nil {
+ slog.Warn("failed to receive meta", slog.String("path", path), slog.String("error", err.Error()))
+ }
+
+ content, err := r.supplements.TemplateManager.Render("general-page", valueMap)
if err != nil {
slog.Warn("failed to generate div", slog.String("path", path), slog.String("error", err.Error()))
return c.Status(fiber.ErrInternalServerError.Code).SendString("failed to generate div")
@@ -484,6 +497,10 @@ func (r *Router) generalPageSegment(c *fiber.Ctx, part string) error {
return c.Status(fiber.ErrInternalServerError.Code).SendString("failed to generate div")
}
+ if statusCode == fiber.StatusNoContent && len(content) != 0 {
+ statusCode = fiber.StatusOK
+ }
+
if statusCode >= 200 && statusCode < 300 && route.ToCache() != Disabled {
go r.supplements.PageCache.SetWithTTL(cacheKey, content, int64(len(content)), route.CacheDuration())
}