2020-03-04 10:29:00 +00:00
|
|
|
package checkins
|
|
|
|
|
|
|
|
import (
|
2020-03-09 18:17:55 +00:00
|
|
|
"github.com/statping/statping/database"
|
2020-06-10 17:46:32 +00:00
|
|
|
"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-06-10 17:46:32 +00:00
|
|
|
if c.ApiKey == "" {
|
|
|
|
c.ApiKey = utils.RandomString(32)
|
|
|
|
}
|
2020-03-10 05:24:35 +00:00
|
|
|
q := db.Create(c)
|
2020-06-10 17:46:32 +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 {
|
2020-06-10 17:46:32 +00:00
|
|
|
c.Close()
|
|
|
|
q := dbHits.Where("checkin = ?", c.Id).Delete(&CheckinHit{})
|
|
|
|
if err := q.Error(); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
q = db.Model(&Checkin{}).Delete(c)
|
2020-03-10 05:24:35 +00:00
|
|
|
return q.Error()
|
|
|
|
}
|