statping/database/failures.go

58 lines
1000 B
Go
Raw Normal View History

2020-02-24 16:26:01 +00:00
package database
import (
"github.com/hunterlong/statping/types"
2020-02-25 07:41:28 +00:00
"time"
2020-02-24 16:26:01 +00:00
)
2020-02-25 07:41:28 +00:00
type FailureObj struct {
o *Object
2020-02-24 16:26:01 +00:00
}
2020-02-25 07:41:28 +00:00
type Failurer interface {
Model() []*types.Failure
}
func (f *FailureObj) Model() []*types.Failure {
return f.All()
}
func (f *FailureObj) All() []*types.Failure {
2020-02-24 16:26:01 +00:00
var fails []*types.Failure
2020-02-25 07:41:28 +00:00
f.o.db.Find(&fails)
2020-02-24 16:26:01 +00:00
return fails
}
2020-02-25 13:18:29 +00:00
func AllFailures() int {
var amount int
database.Failures().Count(&amount)
return amount
}
2020-02-25 07:41:28 +00:00
func (f *FailureObj) DeleteAll() error {
query := database.Exec(`DELETE FROM failures WHERE service = ?`, f.o.Id)
return query.Error()
}
2020-02-26 05:38:03 +00:00
func (f *FailureObj) Last(amount int) []*types.Failure {
var fail []*types.Failure
f.o.db.Limit(amount).Find(&fail)
return fail
2020-02-24 16:26:01 +00:00
}
2020-02-25 07:41:28 +00:00
func (f *FailureObj) Count() int {
2020-02-24 16:26:01 +00:00
var amount int
2020-02-25 07:41:28 +00:00
f.o.db.Count(&amount)
2020-02-24 16:26:01 +00:00
return amount
}
2020-02-25 07:41:28 +00:00
func (f *FailureObj) Since(t time.Time) []*types.Failure {
var fails []*types.Failure
f.o.db.Since(t).Find(&fails)
return fails
}
func (f *FailureObj) object() *Object {
return f.o
2020-02-24 16:26:01 +00:00
}