50 lines
856 B
Go
50 lines
856 B
Go
|
package handlers
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"github.com/gofiber/fiber/v2"
|
||
|
"lmika.dev/lmika/hugo-crm/services/posts"
|
||
|
)
|
||
|
|
||
|
type Post struct {
|
||
|
Post *posts.Service
|
||
|
}
|
||
|
|
||
|
func (h *Post) Posts() fiber.Handler {
|
||
|
return func(c *fiber.Ctx) error {
|
||
|
site := GetSite(c)
|
||
|
|
||
|
posts, err := h.Post.ListPostOfSite(c.UserContext(), site)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return c.Render("sites/posts", fiber.Map{
|
||
|
"site": site,
|
||
|
"posts": posts,
|
||
|
}, "layouts/main")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (h *Post) Create() fiber.Handler {
|
||
|
type Req struct {
|
||
|
Body string `json:"body" form:"body"`
|
||
|
}
|
||
|
|
||
|
return func(c *fiber.Ctx) error {
|
||
|
site := GetSite(c)
|
||
|
|
||
|
var req Req
|
||
|
if err := c.BodyParser(&req); err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
_, err := h.Post.Create(c.UserContext(), site, req.Body)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return c.Redirect(fmt.Sprintf("/sites/%v/posts", site.ID))
|
||
|
}
|
||
|
}
|