Files
kandev/apps/backend/internal/system/metrics/handler.go
T
2026-06-14 22:33:34 +01:00

45 lines
1.1 KiB
Go

package metrics
import (
"errors"
"net/http"
"github.com/gin-gonic/gin"
)
func RegisterRoutes(g *gin.RouterGroup, svc *Service) {
g.GET("/metrics/settings", handleGetSettings(svc))
g.PATCH("/metrics/settings", handleSaveSettings(svc))
}
func handleGetSettings(svc *Service) gin.HandlerFunc {
return func(c *gin.Context) {
settings, err := svc.GetSettings(c.Request.Context())
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to load metrics settings"})
return
}
c.JSON(http.StatusOK, gin.H{"settings": settings})
}
}
func handleSaveSettings(svc *Service) gin.HandlerFunc {
return func(c *gin.Context) {
var req GlobalSettings
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid request"})
return
}
settings, err := svc.SaveSettings(c.Request.Context(), req)
if err != nil {
if errors.Is(err, ErrValidation) {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to save metrics settings"})
return
}
c.JSON(http.StatusOK, gin.H{"settings": settings})
}
}