74 lines
1.6 KiB
Go
74 lines
1.6 KiB
Go
package service
|
|
|
|
import (
|
|
"api/internal/model"
|
|
"api/internal/storage"
|
|
"time"
|
|
)
|
|
|
|
var ComputerData model.ComputerData = model.ComputerData{
|
|
Online: false,
|
|
UptimeStart: -1,
|
|
Totals: model.ComputerTotals{
|
|
Uptime: 0,
|
|
Keys: 0,
|
|
Clicks: 0,
|
|
},
|
|
Graph: initializeGraphData(),
|
|
}
|
|
|
|
func LoadComputerStatTotals() {
|
|
uptimeData := storage.GlobalDataStore.Get("uptime")
|
|
keysData := storage.GlobalDataStore.Get("keys")
|
|
clicksData := storage.GlobalDataStore.Get("clicks")
|
|
|
|
var uptime float64
|
|
var keys float64
|
|
var clicks float64
|
|
|
|
if uptimeData != nil {
|
|
uptime = uptimeData.(float64)
|
|
}
|
|
if keysData != nil {
|
|
keys = keysData.(float64)
|
|
}
|
|
if clicksData != nil {
|
|
clicks = clicksData.(float64)
|
|
}
|
|
|
|
ComputerData.Totals = model.ComputerTotals{
|
|
Uptime: uptime,
|
|
Keys: keys,
|
|
Clicks: clicks,
|
|
}
|
|
}
|
|
|
|
func initializeGraphData() []model.ComputerGraphData {
|
|
graphData := make([]model.ComputerGraphData, 60)
|
|
|
|
for i := range 60 {
|
|
graphData[i] = model.ComputerGraphData{
|
|
Timestamp: time.Now().Truncate(1 * time.Minute).Add(time.Duration(-60+i) * time.Minute),
|
|
Cpu: 0,
|
|
Ram: 0,
|
|
Keys: 0,
|
|
Clicks: 0,
|
|
}
|
|
}
|
|
|
|
return graphData
|
|
}
|
|
|
|
func AddComputerData(clientMessage model.ComputerWebSocketMessage) {
|
|
ComputerData.Graph = append(ComputerData.Graph, model.ComputerGraphData{
|
|
Timestamp: time.Now().Truncate(time.Minute).Add(-time.Minute),
|
|
Cpu: int(clientMessage.Cpu),
|
|
Ram: int(clientMessage.Ram),
|
|
Keys: int(clientMessage.Keys),
|
|
Clicks: int(clientMessage.Clicks),
|
|
})
|
|
|
|
if len(ComputerData.Graph) > 60 {
|
|
ComputerData.Graph = ComputerData.Graph[1:]
|
|
}
|
|
}
|