statping/types/checkins/database.go

59 lines
1.1 KiB
Go
Raw Normal View History

2020-03-04 10:29:00 +00:00
package checkins
import (
2020-03-09 18:17:55 +00:00
"github.com/statping/statping/database"
"github.com/statping/statping/utils"
2020-03-04 10:29:00 +00:00
)
2020-03-10 05:24:35 +00:00
var db database.Database
var dbHits database.Database
2020-03-04 10:29:00 +00:00
2020-03-10 05:24:35 +00:00
func SetDB(database database.Database) {
db = database.Model(&Checkin{})
dbHits = database.Model(&CheckinHit{})
2020-03-04 10:29:00 +00:00
}
func Find(id int64) (*Checkin, error) {
2020-03-06 03:03:18 +00:00
var checkin Checkin
2020-03-10 05:24:35 +00:00
q := db.Where("id = ?", id).Find(&checkin)
return &checkin, q.Error()
2020-03-04 10:29:00 +00:00
}
func FindByAPI(key string) (*Checkin, error) {
2020-03-06 03:03:18 +00:00
var checkin Checkin
2020-03-10 05:24:35 +00:00
q := db.Where("api_key = ?", key).Find(&checkin)
return &checkin, q.Error()
2020-03-04 10:29:00 +00:00
}
func All() []*Checkin {
var checkins []*Checkin
2020-03-10 05:24:35 +00:00
db.Find(&checkins)
2020-03-04 10:29:00 +00:00
return checkins
}
func (c *Checkin) Create() error {
2020-04-14 17:26:33 +00:00
if c.ApiKey == "" {
c.ApiKey = utils.RandomString(32)
}
2020-03-10 05:24:35 +00:00
q := db.Create(c)
2020-03-04 10:29:00 +00:00
c.Start()
go c.CheckinRoutine()
2020-03-10 05:24:35 +00:00
return q.Error()
2020-03-04 10:29:00 +00:00
}
func (c *Checkin) Update() error {
2020-03-10 05:24:35 +00:00
q := db.Update(c)
return q.Error()
2020-03-04 10:29:00 +00:00
}
func (c *Checkin) Delete() error {
c.Close()
2020-03-10 05:24:35 +00:00
q := dbHits.Where("checkin = ?", c.Id).Delete(&CheckinHit{})
if err := q.Error(); err != nil {
return err
}
q = db.Model(&Checkin{}).Delete(c)
return q.Error()
}