mirror of https://github.com/statping/statping
55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
package failures
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/hunterlong/statping/database"
|
|
"time"
|
|
)
|
|
|
|
type ColumnIDInterfacer interface {
|
|
FailuresColumnID() (string, int64)
|
|
}
|
|
|
|
type Failurer struct {
|
|
db database.Database
|
|
}
|
|
|
|
func (f Failurer) Db() database.Database {
|
|
return f.db
|
|
}
|
|
|
|
func (f Failurer) List() []*Failure {
|
|
var fails []*Failure
|
|
f.db.Find(&fails)
|
|
return fails
|
|
}
|
|
|
|
func (f Failurer) Count() int {
|
|
var amount int
|
|
f.db.Count(&amount)
|
|
return amount
|
|
}
|
|
|
|
func (f Failurer) Last(amount int) []*Failure {
|
|
var fails []*Failure
|
|
f.db.Limit(amount).Find(&fails)
|
|
return fails
|
|
}
|
|
|
|
func (f Failurer) Since(t time.Time) []*Failure {
|
|
var fails []*Failure
|
|
f.db.Since(t).Find(&fails)
|
|
return fails
|
|
}
|
|
|
|
func AllFailures(obj ColumnIDInterfacer) Failurer {
|
|
column, id := obj.FailuresColumnID()
|
|
return Failurer{DB().Where(fmt.Sprintf("%s = ?", column), id)}
|
|
}
|
|
|
|
func FailuresSince(t time.Time, obj ColumnIDInterfacer) Failurer {
|
|
column, id := obj.FailuresColumnID()
|
|
timestamp := DB().FormatTime(t)
|
|
return Failurer{DB().Where(fmt.Sprintf("%s = ? AND created_at > ?", column), id, timestamp)}
|
|
}
|