weiro/handlers/sitesettings.go

71 lines
1.6 KiB
Go
Raw Permalink Normal View History

2026-03-09 10:47:02 +00:00
package handlers
import (
"fmt"
"github.com/gofiber/fiber/v3"
"lmika.dev/lmika/weiro/models"
"lmika.dev/lmika/weiro/services/sites"
)
type SiteSettingsHandler struct {
SiteService *sites.Service
}
func (s *SiteSettingsHandler) New(c fiber.Ctx) error {
return c.Render("sitesettings/new", fiber.Map{}, "layouts/bare_with_scripts")
}
func (s *SiteSettingsHandler) Create(c fiber.Ctx) error {
var params sites.CreateSiteParams
if err := c.Bind().Body(&params); err != nil {
return err
}
newSite, err := s.SiteService.CreateSite(c.Context(), params)
if err != nil {
return err
}
return c.Redirect().To(fmt.Sprintf("/sites/%v/posts", newSite.ID))
}
func (s *SiteSettingsHandler) General(c fiber.Ctx) error {
site := c.Locals("site").(models.Site)
2026-03-09 10:47:02 +00:00
return c.Render("sitesettings/general", fiber.Map{
2026-03-09 10:47:02 +00:00
"site": site,
"tzones": sites.ListZones(),
})
}
func (s *SiteSettingsHandler) UpdateGeneral(c fiber.Ctx) error {
site := c.Locals("site").(models.Site)
var params sites.UpdateSiteSettingsParams
if err := c.Bind().Body(&params); err != nil {
return err
}
params.SiteID = site.ID
if _, err := s.SiteService.UpdateSiteSettings(c.Context(), params); err != nil {
return err
}
return c.Redirect().To(fmt.Sprintf("/sites/%v/settings", +site.ID))
}
func (ph PostsHandler) Rebuild(c fiber.Ctx) error {
site := c.Locals("site").(models.Site)
if err := ph.PostService.RebuildSite(c.Context()); err != nil {
return err
}
return accepts(c, json(func() any {
return fiber.Map{}
}), html(func(c fiber.Ctx) error {
return c.Redirect().To(fmt.Sprintf("/sites/%v/settings", +site.ID))
}))
}