From a8e8d2da06b94f8c05e57036df6f2886ac7e8497 Mon Sep 17 00:00:00 2001 From: Rhythm <35167328+kRhythm@users.noreply.github.com> Date: Fri, 25 Feb 2022 09:22:36 +0530 Subject: [PATCH] updated logic --- handlers/services.go | 12 ++++-------- types/downtimes/database.go | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/handlers/services.go b/handlers/services.go index 4aa41043..c6d99ed7 100644 --- a/handlers/services.go +++ b/handlers/services.go @@ -547,25 +547,21 @@ func apiAllServicesStatusHandler(w http.ResponseWriter, r *http.Request) { var srvs []services.ServiceWithDowntime m := make(map[int64]downtimes.Downtime) if t == "" { - timeNow := time.Now() - dtime:=downtimes.FindDowntime2() + dtime := downtimes.FindDowntime2() for i := 0; i < len(dtime); i++ { downtimeVar := dtime[i] - serviceVar,_ := services.Find(downtimeVar.ServiceId) - checkInterval := time.Duration(serviceVar.Interval) - timeInstance := timeNow.Add(-time.Second * checkInterval) - if downtimeVar.End == nil || timeInstance.Before(*(downtimeVar.End)) || timeInstance.Equal(*(downtimeVar.End)) { + serviceVar, _ := services.Find(downtimeVar.ServiceId) + if serviceVar.Online == false { m[downtimeVar.ServiceId] = downtimeVar } } - }else{ + } else { dtime := findAllDowntimes(t) for i := 0; i < len(dtime); i += 1 { m[dtime[i].ServiceId] = dtime[i] } } - for _, v := range services.AllInOrder() { var serviceDowntimeVar services.ServiceWithDowntime serviceDowntimeVar.Service = v diff --git a/types/downtimes/database.go b/types/downtimes/database.go index f11abfa1..86ad1d76 100644 --- a/types/downtimes/database.go +++ b/types/downtimes/database.go @@ -67,7 +67,7 @@ func FindDowntime(timeVar time.Time) []Downtime { return downtime } -func FindDowntime2()[]Downtime { +func FindDowntime2() []Downtime { var downtime []Downtime db.Raw("SELECT DISTINCT ON (downtimes.service) downtimes.* FROM downtimes ORDER BY service ASC, start DESC;").Scan(&downtime) //db.Select("downtimes.*").Joins("left join downtimes as d2 on d2.service = downtimes.service AND downtimes.start < d2.start").Where("d2.end = ?",nil).Find(&downtime)