Added site overview page
This commit is contained in:
@@ -119,6 +119,18 @@ func (c *CachedSiteRepository) UpdateSite(s *models.Site) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *CachedSiteRepository) ToggleEnabled(id string) (enabledReturn bool, err error) {
|
||||
enabledReturn, err = c.inner.ToggleEnabled(id)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
c.mu.Lock()
|
||||
delete(c.sites, id)
|
||||
c.siteListValid = false
|
||||
c.mu.Unlock()
|
||||
return enabledReturn, nil
|
||||
}
|
||||
|
||||
func (c *CachedSiteRepository) DeleteSite(id string) error {
|
||||
if err := c.inner.DeleteSite(id); err != nil {
|
||||
return err
|
||||
|
||||
@@ -254,6 +254,46 @@ func (h *SiteHandler) PutSite(c fiber.Ctx) error {
|
||||
return c.JSON(updatedSite)
|
||||
}
|
||||
|
||||
// ToggleEnabled godoc
|
||||
// @Summary Toggle site enabled status
|
||||
// @Description Enable or disable a site by its ID
|
||||
// @Tags Sites
|
||||
// @Accept json
|
||||
// @Produce json
|
||||
// @Param id path string true "Site ID"
|
||||
// @Success 200 {object} models.ToggleEnabledResponse
|
||||
// @Failure 404 {object} models.APIError
|
||||
// @Failure 500 {object} models.APIError
|
||||
// @Router /sites/{id}/enabled [patch]
|
||||
func (h *SiteHandler) ToggleEnabled(c fiber.Ctx) error {
|
||||
id := c.Params("id")
|
||||
|
||||
if _, err := h.Repo.GetSite(id); err != nil {
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return c.Status(fiber.StatusNotFound).JSON(&models.APIError{
|
||||
Message: "Site not found",
|
||||
})
|
||||
}
|
||||
log.Println("Error checking site before update: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{
|
||||
Message: "Unexpected error while updating site",
|
||||
})
|
||||
}
|
||||
|
||||
enabled, err := h.Repo.ToggleEnabled(id)
|
||||
|
||||
if err != nil {
|
||||
log.Println("Error while toggling enabled: ", err)
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(&models.APIError{
|
||||
Message: "Unexpected error while toggling enabled",
|
||||
})
|
||||
}
|
||||
|
||||
return c.Status(fiber.StatusOK).JSON(&models.ToggleEnabledResponse{
|
||||
Enabled: enabled,
|
||||
})
|
||||
}
|
||||
|
||||
// DeleteSite godoc
|
||||
// @Summary Delete a site
|
||||
// @Description Delete a site by its ID
|
||||
|
||||
@@ -46,3 +46,7 @@ type CreateSiteResponse struct {
|
||||
Site Site `json:"site"`
|
||||
RawDeployToken string `json:"raw_deploy_token"`
|
||||
}
|
||||
|
||||
type ToggleEnabledResponse struct {
|
||||
Enabled bool `json:"enabled"`
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ type SiteRepository interface {
|
||||
ListSites() ([]models.Site, error)
|
||||
CreateSite(s *models.Site) error
|
||||
UpdateSite(s *models.Site) error
|
||||
ToggleEnabled(id string) (enabled bool, err error)
|
||||
DeleteSite(id string) error
|
||||
GetForwardRule(id string) (*models.ForwardRule, error)
|
||||
CreateForwardRule(siteID string, fr *models.ForwardRule) error
|
||||
|
||||
@@ -31,6 +31,7 @@ func Register(app *fiber.App, cfg *config.Config, envCfg *envconfig.EnvConfig, d
|
||||
api.Post("/sites", siteHandler.PostSite)
|
||||
api.Put("/sites/:id", siteHandler.PutSite)
|
||||
api.Delete("/sites/:id", siteHandler.DeleteSite)
|
||||
api.Patch("/sites/:id/enabled", siteHandler.ToggleEnabled)
|
||||
|
||||
api.Get("/sites/:id/forward-rules", siteHandler.GetSiteForwardRules)
|
||||
api.Post("/sites/:id/forward-rules", siteHandler.PostForwardRule)
|
||||
|
||||
Reference in New Issue
Block a user