From 84dfe05de8835deeb7eb7bedd72d3db8baa202cb Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Sun, 20 Jul 2025 21:38:37 +0100 Subject: [PATCH] feat: computer data uptime also fix last commit --- internal/handler/computer.go | 3 +++ internal/model/computer.go | 7 ++++--- internal/server/router.go | 7 ++++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/internal/handler/computer.go b/internal/handler/computer.go index 8544477..df7370a 100644 --- a/internal/handler/computer.go +++ b/internal/handler/computer.go @@ -9,6 +9,7 @@ import ( "log/slog" "net/http" "os" + "time" "github.com/gorilla/websocket" ) @@ -36,12 +37,14 @@ func HandleComputerWebSocket(w http.ResponseWriter, r *http.Request) { slog.Info("WebSocket connection established") service.ComputerData.Online = true + service.ComputerData.UptimeStart = int(time.Now().Unix()) for { _, message, err := conn.ReadMessage() if err != nil { slog.Error("WebSocket connection closed by client", slog.Any("error", err)) service.ComputerData.Online = false + service.ComputerData.UptimeStart = 0 break } diff --git a/internal/model/computer.go b/internal/model/computer.go index 7621e01..0bd95c9 100644 --- a/internal/model/computer.go +++ b/internal/model/computer.go @@ -10,9 +10,10 @@ type ComputerWebSocketMessage struct { } type ComputerData struct { - Online bool `json:"online"` - Totals ComputerTotals `json:"totals"` - Graph []ComputerGraphData `json:"graph"` + Online bool `json:"online"` + UptimeStart int `json:"uptimeStart"` + Totals ComputerTotals `json:"totals"` + Graph []ComputerGraphData `json:"graph"` } type ComputerTotals struct { diff --git a/internal/server/router.go b/internal/server/router.go index 2d5a66d..0084a84 100644 --- a/internal/server/router.go +++ b/internal/server/router.go @@ -52,12 +52,17 @@ func NewRouter() { // Prometheus r.Handle("/metrics", promhttp.Handler()) + var commit = "unknown" + if os.Getenv("SOURCE_COMMIT") != "" { + commit = os.Getenv("SOURCE_COMMIT")[:7] // shorten to 7 characters + } + r.Get("/", func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(map[string]string{ "name": "trafficlunar's api", "url": "https://github.com/trafficlunar/api", - "commit": os.Getenv("SOURCE_COMMIT")[:7], // shorten to 7 characters + "commit": commit, }) }) r.Get("/favicon.ico", func(w http.ResponseWriter, r *http.Request) {