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(¶ms); 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) return c.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(¶ms); 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)) })) }