Merge pull request #26 from razorpay/status_tree_bug_fix

Status Tree null time bug_fix
pull/1097/head
kRhythm53 2022-02-28 18:29:06 +05:30 committed by GitHub
commit 1892461955
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 9 deletions

View File

@ -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

View File

@ -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 {

View File

@ -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

View File

@ -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,