3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-11-15 00:19:29 +01:00

Merge pull request #1945 from slingamn/generic_reverse

use genericized slice-reversing function
This commit is contained in:
Shivaram Lingamneni 2022-04-30 21:29:25 -04:00 committed by GitHub
commit 71fe4ecf48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 9 deletions

View File

@ -4,9 +4,10 @@
package history package history
import ( import (
"github.com/ergochat/ergo/irc/utils"
"sync" "sync"
"time" "time"
"github.com/ergochat/ergo/irc/utils"
) )
type ItemType uint type ItemType uint
@ -55,12 +56,6 @@ func (item *Item) HasMsgid(msgid string) bool {
type Predicate func(item *Item) (matches 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 // Buffer is a ring buffer holding message/event history for a channel or user
type Buffer struct { type Buffer struct {
sync.RWMutex sync.RWMutex
@ -160,7 +155,7 @@ func (list *Buffer) betweenHelper(start, end Selector, cutoff time.Time, pred Pr
defer func() { defer func() {
if !ascending { if !ascending {
Reverse(results) utils.ReverseSlice(results)
} }
}() }()

View File

@ -916,7 +916,7 @@ func (mysql *MySQL) betweenTimestamps(ctx context.Context, target, correspondent
results, err = mysql.selectItems(ctx, queryBuf.String(), args...) results, err = mysql.selectItems(ctx, queryBuf.String(), args...)
if err == nil && !ascending { if err == nil && !ascending {
history.Reverse(results) utils.ReverseSlice(results)
} }
return return
} }

View File

@ -27,3 +27,10 @@ func CopyMap[K comparable, V any](input map[K]V) (result map[K]V) {
} }
return 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]
}
}