Browse Source

add scheduled date to item sorting.

master
Gisle Aune 2 years ago
parent
commit
b716c79434
  1. 27
      ports/mysql/items.go

27
ports/mysql/items.go

@ -166,17 +166,32 @@ func (r *itemRepository) Fetch(ctx context.Context, filter models.ItemFilter) ([
}
sort.Slice(res, func(i, j int) bool {
if res[i].AcquiredTime == nil && res[j].AcquiredTime != nil {
// Most recently acquired first
ati, atj := res[i].AcquiredTime, res[j].AcquiredTime
if ati == nil && atj != nil {
return true
}
if res[i].AcquiredTime != nil && res[j].AcquiredTime == nil {
if ati != nil && atj == nil {
return false
}
if res[i].AcquiredTime != nil && res[j].AcquiredTime != nil {
return res[i].AcquiredTime.After(*res[j].AcquiredTime)
} else {
return res[i].CreatedTime.After(res[j].CreatedTime)
if ati != nil && atj != nil {
return ati.After(*atj)
}
// Most recently scheduled next
sdi, sdj := res[i].ScheduledDate, res[j].ScheduledDate
if sdi != nil && sdj == nil {
return true
}
if sdi == nil && sdj != nil {
return false
}
if sdi != nil && sdj != nil {
return sdi.Before(*sdj)
}
// Created last
return res[i].CreatedTime.After(res[j].CreatedTime)
})
return res, nil

Loading…
Cancel
Save