nezha/model/service_api.go
2024-10-25 00:13:45 +08:00

56 lines
1.8 KiB
Go

package model
import "time"
type ServiceForm struct {
Name string `json:"name,omitempty"`
Target string `json:"target,omitempty"`
Type uint8 `json:"type,omitempty"`
Cover uint8 `json:"cover,omitempty"`
Notify bool `json:"notify,omitempty"`
Duration uint64 `json:"duration,omitempty"`
MinLatency float32 `json:"min_latency,omitempty"`
MaxLatency float32 `json:"max_latency,omitempty"`
LatencyNotify bool `json:"latency_notify,omitempty"`
EnableTriggerTask bool `json:"enable_trigger_task,omitempty"`
EnableShowInService bool `json:"enable_show_in_service,omitempty"`
FailTriggerTasks []uint64 `json:"fail_trigger_tasks,omitempty"`
RecoverTriggerTasks []uint64 `json:"recover_trigger_tasks,omitempty"`
SkipServers map[uint64]bool `json:"skip_servers,omitempty"`
NotificationGroupID uint64 `json:"notification_group_id,omitempty"`
}
type ServiceResponseItem struct {
Service *Service
CurrentUp uint64
CurrentDown uint64
TotalUp uint64
TotalDown uint64
Delay *[30]float32
Up *[30]int
Down *[30]int
}
func (r ServiceResponseItem) TotalUptime() float32 {
if r.TotalUp+r.TotalDown == 0 {
return 0
}
return float32(r.TotalUp) / (float32(r.TotalUp + r.TotalDown)) * 100
}
type CycleTransferStats struct {
Name string
From time.Time
To time.Time
Max uint64
Min uint64
ServerName map[uint64]string
Transfer map[uint64]uint64
NextUpdate map[uint64]time.Time
}
type ServiceResponse struct {
Services map[uint64]ServiceResponseItem
CycleTransferStats map[uint64]CycleTransferStats
}