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