chore: sync local updates
This commit is contained in:
70
mengyamonitor-backend-server/internal/handler/public.go
Normal file
70
mengyamonitor-backend-server/internal/handler/public.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"mengyamonitor-backend-server/internal/model"
|
||||
"mengyamonitor-backend-server/internal/store"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type Public struct {
|
||||
Store *store.Store
|
||||
}
|
||||
|
||||
// publicServer hides agent_key from unauthenticated API consumers.
|
||||
type publicServer struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
URL string `json:"url"`
|
||||
Enabled bool `json:"enabled"`
|
||||
SortOrder int `json:"sortOrder"`
|
||||
CreatedAt time.Time `json:"createdAt,omitempty"`
|
||||
}
|
||||
|
||||
func toPublicServers(in []model.MonitoredServer) []publicServer {
|
||||
out := make([]publicServer, 0, len(in))
|
||||
for _, s := range in {
|
||||
out = append(out, publicServer{
|
||||
ID: s.ID, Name: s.Name, URL: s.URL, Enabled: s.Enabled,
|
||||
SortOrder: s.SortOrder, CreatedAt: s.CreatedAt,
|
||||
})
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func (h *Public) Health(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{"status": "ok"})
|
||||
}
|
||||
|
||||
func (h *Public) ListServers(c *gin.Context) {
|
||||
list, err := h.Store.ListEnabled(c.Request.Context())
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{"data": toPublicServers(list)})
|
||||
}
|
||||
|
||||
func (h *Public) Root(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"service": "萌芽监控 — 中心服务",
|
||||
"version": "1.0.0",
|
||||
"public": []string{
|
||||
"GET /api/health",
|
||||
"GET /api/servers",
|
||||
"GET /api/ws/monitor — WebSocket 指标快照",
|
||||
"gRPC AgentIngest — 见环境变量 GRPC_PORT",
|
||||
},
|
||||
"admin": []string{
|
||||
"POST /api/admin/auth",
|
||||
"GET /api/admin/servers",
|
||||
"POST /api/admin/servers",
|
||||
"PUT /api/admin/servers/:id",
|
||||
"DELETE /api/admin/servers/:id",
|
||||
"PUT /api/admin/servers/reorder",
|
||||
},
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user