owl-blogs/web/entry_handler.go

42 lines
959 B
Go
Raw Normal View History

2023-06-25 19:32:36 +00:00
package web
import (
"owl-blogs/app"
2023-07-13 19:20:00 +00:00
"owl-blogs/domain/model"
2023-07-09 17:51:49 +00:00
"owl-blogs/render"
2023-06-25 19:32:36 +00:00
"github.com/gofiber/fiber/v2"
)
type EntryHandler struct {
2023-07-13 19:20:00 +00:00
entrySvc *app.EntryService
authorSvc *app.AuthorService
registry *app.EntryTypeRegistry
2023-06-25 19:32:36 +00:00
}
2023-07-13 19:20:00 +00:00
type entryData struct {
Entry model.Entry
Author *model.Author
}
func NewEntryHandler(entryService *app.EntryService, registry *app.EntryTypeRegistry, authorService *app.AuthorService) *EntryHandler {
return &EntryHandler{entrySvc: entryService, authorSvc: authorService, registry: registry}
2023-07-07 19:04:25 +00:00
}
2023-06-25 19:32:36 +00:00
func (h *EntryHandler) Handle(c *fiber.Ctx) error {
2023-07-07 19:04:25 +00:00
c.Set(fiber.HeaderContentType, fiber.MIMETextHTML)
entryId := c.Params("post")
entry, err := h.entrySvc.FindById(entryId)
if err != nil {
return err
}
2023-07-13 19:55:08 +00:00
author, err := h.authorSvc.FindByName(entry.AuthorId())
2023-07-13 19:20:00 +00:00
if err != nil {
2023-07-13 19:55:08 +00:00
author = &model.Author{}
2023-07-13 19:20:00 +00:00
}
return render.RenderTemplateWithBase(c, "views/entry", entryData{Entry: entry, Author: author})
2023-06-25 19:32:36 +00:00
}