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
|
|
|
}
|