feat: add category selection to post edit form and badges to post list

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Leon Mika 2026-03-18 21:45:28 +11:00
parent ffa86b12e9
commit 4c2ce7272d
6 changed files with 112 additions and 30 deletions

View file

@ -6,11 +6,13 @@ import (
"github.com/gofiber/fiber/v3"
"lmika.dev/lmika/weiro/models"
"lmika.dev/lmika/weiro/services/categories"
"lmika.dev/lmika/weiro/services/posts"
)
type PostsHandler struct {
PostService *posts.Service
PostService *posts.Service
CategoryService *categories.Service
}
func (ph PostsHandler) Index(c fiber.Ctx) error {
@ -42,8 +44,15 @@ func (ph PostsHandler) New(c fiber.Ctx) error {
State: models.StateDraft,
}
cats, err := ph.CategoryService.ListCategories(c.Context())
if err != nil {
return err
}
return c.Render("posts/edit", fiber.Map{
"post": p,
"post": p,
"categories": cats,
"selectedCategories": map[int64]bool{},
})
}
@ -62,11 +71,28 @@ func (ph PostsHandler) Edit(c fiber.Ctx) error {
return err
}
cats, err := ph.CategoryService.ListCategories(c.Context())
if err != nil {
return err
}
postCats, err := ph.PostService.GetPostCategories(c.Context(), postID)
if err != nil {
return err
}
selectedCategories := make(map[int64]bool)
for _, pc := range postCats {
selectedCategories[pc.ID] = true
}
return accepts(c, json(func() any {
return post
}), html(func(c fiber.Ctx) error {
return c.Render("posts/edit", fiber.Map{
"post": post,
"post": post,
"categories": cats,
"selectedCategories": selectedCategories,
})
}))
}