mirror of https://github.com/statping/statping
Merge pull request #26 from razorpay/status_tree_bug_fix
Status Tree null time bug_fixpull/1097/head
commit
1892461955
|
@ -93,7 +93,7 @@ func apiAllDowntimesForServiceHandler(w http.ResponseWriter, r *http.Request) {
|
|||
serviceId := utils.ToInt(vars["service_id"])
|
||||
ninetyDaysAgo := time.Now().Add(time.Duration(-90*24) * time.Hour)
|
||||
|
||||
downtime, err := downtimes.FindByService(serviceId, ninetyDaysAgo, time.Now())
|
||||
downtime, err := downtimes.FindByServiceAndDuration(serviceId, ninetyDaysAgo, time.Now())
|
||||
if err != nil {
|
||||
sendErrorJson(err, w, r)
|
||||
return
|
||||
|
|
|
@ -545,12 +545,23 @@ func apiAllServicesStatusHandler(w http.ResponseWriter, r *http.Request) {
|
|||
t = query.Get("time")
|
||||
}
|
||||
var srvs []services.ServiceWithDowntime
|
||||
dtime := findAllDowntimes(t)
|
||||
servicesList := services.AllInOrder()
|
||||
m := make(map[int64]downtimes.Downtime)
|
||||
for i := 0; i < len(dtime); i += 1 {
|
||||
m[dtime[i].ServiceId] = dtime[i]
|
||||
if t == "" {
|
||||
for _, v := range servicesList {
|
||||
if v.Online == false {
|
||||
downtime := downtimes.FindLatestDowntimeOfService(v.Id)
|
||||
m[v.Id] = downtime
|
||||
}
|
||||
}
|
||||
} else {
|
||||
dtime := findAllDowntimes(t)
|
||||
for i := 0; i < len(dtime); i += 1 {
|
||||
m[dtime[i].ServiceId] = dtime[i]
|
||||
}
|
||||
}
|
||||
for _, v := range services.AllInOrder() {
|
||||
|
||||
for _, v := range servicesList {
|
||||
var serviceDowntimeVar services.ServiceWithDowntime
|
||||
serviceDowntimeVar.Service = v
|
||||
if vv, ok := m[v.Id]; ok == true {
|
||||
|
|
|
@ -53,10 +53,10 @@ func (c *Downtime) BeforeUpdate() error {
|
|||
return c.Validate()
|
||||
}
|
||||
|
||||
func FindByService(service int64, start time.Time, end time.Time) (*[]Downtime, error) {
|
||||
func FindByServiceAndDuration(service int64, start time.Time, end time.Time) (*[]Downtime, error) {
|
||||
var downtime []Downtime
|
||||
q := db.Where("service = ? and start BETWEEN ? AND ? ", service, start, end)
|
||||
q = q.Order("id ASC ").Find(&downtime)
|
||||
q := db.Where("service = ? and start BETWEEN ? AND ?", service, start, end)
|
||||
q = q.Order("id ASC").Find(&downtime)
|
||||
return &downtime, q.Error()
|
||||
}
|
||||
|
||||
|
@ -67,6 +67,13 @@ func FindDowntime(timeVar time.Time) []Downtime {
|
|||
return downtime
|
||||
}
|
||||
|
||||
func FindLatestDowntimeOfService(service int64) Downtime {
|
||||
var downtime Downtime
|
||||
q := db.Where("service = ?", service)
|
||||
q = q.Order("start desc").First(&downtime)
|
||||
return downtime
|
||||
}
|
||||
|
||||
func FindAll(vars map[string]string) (*[]Downtime, error) {
|
||||
var downtime []Downtime
|
||||
var start time.Time
|
||||
|
|
|
@ -68,7 +68,7 @@ func (s Service) Duration() time.Duration {
|
|||
|
||||
func (s Service) DowntimeData(start time.Time, end time.Time) (*UptimeSeries, *[]downtimes.Downtime, error) {
|
||||
|
||||
downtimesList, _ := downtimes.FindByService(s.Id, start, end)
|
||||
downtimesList, _ := downtimes.FindByServiceAndDuration(s.Id, start, end)
|
||||
|
||||
response := &UptimeSeries{
|
||||
Start: start,
|
||||
|
|
Loading…
Reference in New Issue