diff --git a/irc/history/history.go b/irc/history/history.go index 28b2d891..fda91c03 100644 --- a/irc/history/history.go +++ b/irc/history/history.go @@ -4,9 +4,10 @@ package history import ( - "github.com/ergochat/ergo/irc/utils" "sync" "time" + + "github.com/ergochat/ergo/irc/utils" ) type ItemType uint @@ -55,12 +56,6 @@ func (item *Item) HasMsgid(msgid string) bool { type Predicate func(item *Item) (matches bool) -func Reverse(results []Item) { - for i, j := 0, len(results)-1; i < j; i, j = i+1, j-1 { - results[i], results[j] = results[j], results[i] - } -} - // Buffer is a ring buffer holding message/event history for a channel or user type Buffer struct { sync.RWMutex @@ -160,7 +155,7 @@ func (list *Buffer) betweenHelper(start, end Selector, cutoff time.Time, pred Pr defer func() { if !ascending { - Reverse(results) + utils.ReverseSlice(results) } }() diff --git a/irc/mysql/history.go b/irc/mysql/history.go index 39a13697..dddef81e 100644 --- a/irc/mysql/history.go +++ b/irc/mysql/history.go @@ -916,7 +916,7 @@ func (mysql *MySQL) betweenTimestamps(ctx context.Context, target, correspondent results, err = mysql.selectItems(ctx, queryBuf.String(), args...) if err == nil && !ascending { - history.Reverse(results) + utils.ReverseSlice(results) } return } diff --git a/irc/utils/types.go b/irc/utils/types.go index 06b56649..5ad2ce93 100644 --- a/irc/utils/types.go +++ b/irc/utils/types.go @@ -27,3 +27,10 @@ func CopyMap[K comparable, V any](input map[K]V) (result map[K]V) { } return } + +// reverse the order of a slice in place +func ReverseSlice[T any](results []T) { + for i, j := 0, len(results)-1; i < j; i, j = i+1, j-1 { + results[i], results[j] = results[j], results[i] + } +}