40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
|
package check
|
||
|
|
||
|
// Response is a result of a collection of health checks.
|
||
|
type Response struct {
|
||
|
Name string `json:"name"`
|
||
|
Status Status `json:"status"`
|
||
|
Message string `json:"message,omitempty"`
|
||
|
Checks Responses `json:"checks,omitempty"`
|
||
|
}
|
||
|
|
||
|
// HasCheck verifies whether the receiving Response has a check with the given name or not.
|
||
|
func (r *Response) HasCheck(name string) bool {
|
||
|
found := false
|
||
|
for _, check := range r.Checks {
|
||
|
if check.Name == name {
|
||
|
found = true
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
return found
|
||
|
}
|
||
|
|
||
|
// Responses is a sortable collection of Response objects.
|
||
|
type Responses []Response
|
||
|
|
||
|
func (r Responses) Len() int { return len(r) }
|
||
|
|
||
|
// Less defines the order in which responses are sorted.
|
||
|
//
|
||
|
// Failing responses are always sorted before passing responses. Responses with
|
||
|
// the same status are then sorted according to the name of the check.
|
||
|
func (r Responses) Less(i, j int) bool {
|
||
|
if r[i].Status == r[j].Status {
|
||
|
return r[i].Name < r[j].Name
|
||
|
}
|
||
|
return r[i].Status < r[j].Status
|
||
|
}
|
||
|
|
||
|
func (r Responses) Swap(i, j int) { r[i], r[j] = r[j], r[i] }
|