Diffstat (limited to 'internal/router/router.go')
| -rw-r--r-- | internal/router/router.go | 21 |
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()) } |