mirror of https://github.com/statping/statping
				
				
				
			
		
			
				
	
	
		
			72 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
package failures
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"github.com/statping-ng/statping-ng/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) First() *Failure {
 | 
						|
	var fail Failure
 | 
						|
	f.db.Order("id ASC").Limit(1).Find(&fail)
 | 
						|
	return &fail
 | 
						|
}
 | 
						|
 | 
						|
func (f Failurer) Last() *Failure {
 | 
						|
	var fail Failure
 | 
						|
	f.db.Order("id DESC").Limit(1).Find(&fail)
 | 
						|
	return &fail
 | 
						|
}
 | 
						|
 | 
						|
func (f Failurer) List() []*Failure {
 | 
						|
	var fails []*Failure
 | 
						|
	f.db.Find(&fails)
 | 
						|
	return fails
 | 
						|
}
 | 
						|
 | 
						|
func (f Failurer) LastAmount(amount int) []*Failure {
 | 
						|
	var fail []*Failure
 | 
						|
	f.db.Order("id DESC").Limit(amount).Find(&fail)
 | 
						|
	return fail
 | 
						|
}
 | 
						|
 | 
						|
func (f Failurer) Since(t time.Time) []*Failure {
 | 
						|
	var fails []*Failure
 | 
						|
	f.db.Since(t).Find(&fails)
 | 
						|
	return fails
 | 
						|
}
 | 
						|
 | 
						|
func (f Failurer) Count() int {
 | 
						|
	var amount int
 | 
						|
	f.db.Count(&amount)
 | 
						|
	return amount
 | 
						|
}
 | 
						|
 | 
						|
func (f Failurer) DeleteAll() error {
 | 
						|
	q := f.db.Delete(&Failure{})
 | 
						|
	return q.Error()
 | 
						|
}
 | 
						|
 | 
						|
func AllFailures(obj ColumnIDInterfacer) Failurer {
 | 
						|
	column, id := obj.FailuresColumnID()
 | 
						|
	return Failurer{db.Where(fmt.Sprintf("%s = ?", column), id)}
 | 
						|
}
 | 
						|
 | 
						|
func Since(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)}
 | 
						|
}
 |