mirror of https://github.com/statping/statping
74 lines
1.8 KiB
Go
74 lines
1.8 KiB
Go
![]() |
package core
|
||
|
|
||
|
import (
|
||
|
"github.com/hunterlong/statping/types"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
type Incident struct {
|
||
|
*types.Incident
|
||
|
}
|
||
|
|
||
|
type IncidentUpdate struct {
|
||
|
*types.IncidentUpdate
|
||
|
}
|
||
|
|
||
|
// AllIncidents will return all incidents and updates recorded
|
||
|
func AllIncidents() []*Incident {
|
||
|
var incidents []*Incident
|
||
|
incidentsDB().Find(&incidents).Order("id desc")
|
||
|
for _, i := range incidents {
|
||
|
var updates []*types.IncidentUpdate
|
||
|
incidentsUpdatesDB().Find(&updates).Order("id desc")
|
||
|
i.Updates = updates
|
||
|
}
|
||
|
return incidents
|
||
|
}
|
||
|
|
||
|
// Incidents will return the all incidents for a service
|
||
|
func (s *Service) Incidents() []*Incident {
|
||
|
var incidentArr []*Incident
|
||
|
incidentsDB().Where("service = ?", s.Id).Order("id desc").Find(&incidentArr)
|
||
|
return incidentArr
|
||
|
}
|
||
|
|
||
|
// AllUpdates will return the all updates for an incident
|
||
|
func (i *Incident) AllUpdates() []*IncidentUpdate {
|
||
|
var updatesArr []*IncidentUpdate
|
||
|
incidentsUpdatesDB().Where("incident = ?", i.Id).Order("id desc").Find(&updatesArr)
|
||
|
return updatesArr
|
||
|
}
|
||
|
|
||
|
// Delete will remove a incident
|
||
|
func (i *Incident) Delete() error {
|
||
|
err := incidentsDB().Delete(i)
|
||
|
return err.Error
|
||
|
}
|
||
|
|
||
|
// Create will create a incident and insert it into the database
|
||
|
func (i *Incident) Create() (int64, error) {
|
||
|
i.CreatedAt = time.Now()
|
||
|
db := incidentsDB().Create(i)
|
||
|
return i.Id, db.Error
|
||
|
}
|
||
|
|
||
|
// Update will update a incident
|
||
|
func (i *Incident) Update() (int64, error) {
|
||
|
i.UpdatedAt = time.Now()
|
||
|
db := incidentsDB().Update(i)
|
||
|
return i.Id, db.Error
|
||
|
}
|
||
|
|
||
|
// Delete will remove a incident update
|
||
|
func (i *IncidentUpdate) Delete() error {
|
||
|
err := incidentsUpdatesDB().Delete(i)
|
||
|
return err.Error
|
||
|
}
|
||
|
|
||
|
// Create will create a incident update and insert it into the database
|
||
|
func (i *IncidentUpdate) Create() (int64, error) {
|
||
|
i.CreatedAt = time.Now()
|
||
|
db := incidentsUpdatesDB().Create(i)
|
||
|
return i.Id, db.Error
|
||
|
}
|