Implement support for sorting order
This commit is contained in:
parent
f22be8fccf
commit
2493e581ae
|
@ -79,38 +79,59 @@ func (queue MailQ) Sort(config qEntrySortConfig) {
|
||||||
}
|
}
|
||||||
sort.Slice(queue.Entries, func(a int, b int) bool {
|
sort.Slice(queue.Entries, func(a int, b int) bool {
|
||||||
for _, sortBy := range config.attributes {
|
for _, sortBy := range config.attributes {
|
||||||
|
var cmp bool
|
||||||
|
var skip bool
|
||||||
|
// Not sure if these are necessary yet
|
||||||
|
cmp = false
|
||||||
|
skip = false
|
||||||
switch sortBy.attribute {
|
switch sortBy.attribute {
|
||||||
case "Id":
|
case "Id":
|
||||||
if queue.Entries[a].Id != queue.Entries[b].Id {
|
if queue.Entries[a].Id != queue.Entries[b].Id {
|
||||||
return queue.Entries[a].Id < queue.Entries[b].Id
|
skip = true
|
||||||
}
|
}
|
||||||
|
cmp = queue.Entries[a].Id < queue.Entries[b].Id
|
||||||
case "Status":
|
case "Status":
|
||||||
if queue.Entries[a].Status != queue.Entries[b].Status {
|
if queue.Entries[a].Status != queue.Entries[b].Status {
|
||||||
return queue.Entries[a].Status < queue.Entries[b].Status
|
skip = true
|
||||||
}
|
}
|
||||||
|
cmp = queue.Entries[a].Status < queue.Entries[b].Status
|
||||||
case "Date":
|
case "Date":
|
||||||
if !queue.Entries[a].Date.Equal(queue.Entries[b].Date) {
|
if !queue.Entries[a].Date.Equal(queue.Entries[b].Date) {
|
||||||
return queue.Entries[a].Date.Before(queue.Entries[b].Date)
|
skip = true
|
||||||
}
|
}
|
||||||
|
cmp = queue.Entries[a].Date.Before(queue.Entries[b].Date)
|
||||||
case "Size":
|
case "Size":
|
||||||
if queue.Entries[a].Size != queue.Entries[b].Size {
|
if queue.Entries[a].Size != queue.Entries[b].Size {
|
||||||
return queue.Entries[a].Size < queue.Entries[b].Size
|
skip = true
|
||||||
}
|
}
|
||||||
|
cmp = queue.Entries[a].Size < queue.Entries[b].Size
|
||||||
case "Sender":
|
case "Sender":
|
||||||
if queue.Entries[a].Sender != queue.Entries[b].Sender {
|
if queue.Entries[a].Sender != queue.Entries[b].Sender {
|
||||||
return queue.Entries[a].Sender < queue.Entries[b].Sender
|
skip = true
|
||||||
}
|
}
|
||||||
|
cmp = queue.Entries[a].Sender < queue.Entries[b].Sender
|
||||||
case "Recipients":
|
case "Recipients":
|
||||||
if len(queue.Entries[a].Recipients) != len(queue.Entries[b].Recipients) {
|
if len(queue.Entries[a].Recipients) != len(queue.Entries[b].Recipients) {
|
||||||
return len(queue.Entries[a].Recipients) < len(queue.Entries[b].Recipients)
|
skip = true
|
||||||
}
|
}
|
||||||
|
cmp = len(queue.Entries[a].Recipients) < len(queue.Entries[b].Recipients)
|
||||||
case "Reason":
|
case "Reason":
|
||||||
if queue.Entries[a].Reason != queue.Entries[b].Reason {
|
if queue.Entries[a].Reason != queue.Entries[b].Reason {
|
||||||
return queue.Entries[a].Reason < queue.Entries[b].Reason
|
skip = true
|
||||||
}
|
}
|
||||||
|
cmp = queue.Entries[a].Reason < queue.Entries[b].Reason
|
||||||
default:
|
default:
|
||||||
// TODO: Handle this error case?
|
// TODO: Handle this error case?
|
||||||
}
|
}
|
||||||
|
if skip == true {
|
||||||
|
continue
|
||||||
|
} else {
|
||||||
|
if sortBy.order == "ASC" {
|
||||||
|
return cmp
|
||||||
|
} else if sortBy.order == "DESC" {
|
||||||
|
return !cmp
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue