in pkg/storage/cassandra/store.go [1943:2010]
func Less(orderByList []*query.OrderBy, t1 *task.TaskInfo, t2 *task.TaskInfo) bool {
// Keep comparing the two tasks by the field related with Order from the OrderbyList
// until they are not equal on one fields
for _, orderBy := range orderByList {
desc := orderBy.GetOrder() == query.OrderBy_DESC
property := orderBy.GetProperty().GetValue()
if property == creationTimeField {
time1, err1 := time.Parse(time.RFC3339, t1.GetRuntime().GetStartTime())
time2, err2 := time.Parse(time.RFC3339, t2.GetRuntime().GetStartTime())
if err1 != nil || err2 != nil {
// if any StartTime of two tasks can't get parsed (or not exist)
// task with a valid StartTime is less
if err1 == nil {
return !desc
} else if err2 == nil {
return desc
}
// both tasks have invalid StartTime, goto next loop
continue
}
// return result if not equal, otherwise goto next loop
if time1.Before(time2) {
return !desc
} else if time1.After(time2) {
return desc
}
} else if property == hostField {
if t1.GetRuntime().GetHost() < t2.GetRuntime().GetHost() {
return !desc
} else if t1.GetRuntime().GetHost() > t2.GetRuntime().GetHost() {
return desc
}
} else if property == instanceIDField {
if t1.GetInstanceId() < t2.GetInstanceId() {
return !desc
} else if t1.GetInstanceId() > t2.GetInstanceId() {
return desc
}
} else if property == messageField {
if t1.GetRuntime().GetMessage() < t2.GetRuntime().GetMessage() {
return !desc
} else if t1.GetRuntime().GetMessage() > t2.GetRuntime().GetMessage() {
return desc
}
} else if property == nameField {
if t1.GetConfig().GetName() < t2.GetConfig().GetName() {
return !desc
} else if t1.GetConfig().GetName() > t2.GetConfig().GetName() {
return desc
}
} else if property == reasonField {
if t1.GetRuntime().GetReason() < t2.GetRuntime().GetReason() {
return !desc
} else if t1.GetRuntime().GetReason() > t2.GetRuntime().GetReason() {
return desc
}
} else if property == stateField {
if t1.GetRuntime().GetState() < t2.GetRuntime().GetState() {
return !desc
} else if t1.GetRuntime().GetState() > t2.GetRuntime().GetState() {
return desc
}
}
}
// Default order by InstanceId with increase order
return t1.GetInstanceId() < t2.GetInstanceId()
}