weiro/handlers/sitesettings.go

53 lines
1.1 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) General(ctx fiber.Ctx) error {
site := ctx.Locals("site").(models.Site)
return ctx.Render("sitesettings/general", fiber.Map{
"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))
}))
}