mirror of https://github.com/statping/statping
54 lines
941 B
Go
54 lines
941 B
Go
package database
|
|
|
|
import (
|
|
"github.com/hunterlong/statping/types"
|
|
"time"
|
|
)
|
|
|
|
type HitObj struct {
|
|
o *Object
|
|
}
|
|
|
|
func (h *HitObj) All() []*types.Hit {
|
|
var fails []*types.Hit
|
|
h.o.db.Find(&fails)
|
|
return fails
|
|
}
|
|
|
|
func (s *ServiceObj) CreateHit(hit *types.Hit) *HitObj {
|
|
hit.Service = s.Id
|
|
database.Create(hit)
|
|
return &HitObj{wrapObject(hit.Id, hit, database.Hits().Where("id = ?", hit.Id))}
|
|
}
|
|
|
|
func (h *HitObj) Sum() float64 {
|
|
result := struct {
|
|
amount float64
|
|
}{0}
|
|
|
|
h.o.db.Select("AVG(latency) as amount").Scan(&result).Debug()
|
|
return result.amount
|
|
}
|
|
|
|
func (h *HitObj) Last(amount int) []*types.Hit {
|
|
var hits []*types.Hit
|
|
h.o.db.Limit(amount).Find(&hits)
|
|
return hits
|
|
}
|
|
|
|
func (h *HitObj) Since(t time.Time) []*types.Hit {
|
|
var hits []*types.Hit
|
|
h.o.db.Since(t).Find(&hits)
|
|
return hits
|
|
}
|
|
|
|
func (h *HitObj) Count() int {
|
|
var amount int
|
|
h.o.db.Count(&amount)
|
|
return amount
|
|
}
|
|
|
|
func (h *HitObj) object() *Object {
|
|
return h.o
|
|
}
|