statping/database/hits.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
}