@@ -14,16 +14,20 @@ import (
14
14
func (s * ChatMessagesStorage ) GetMessagesSince (
15
15
ctx context.Context ,
16
16
since time.Time ,
17
+ limit uint ,
17
18
) ([]api.ChatMessage , error ) {
18
- return xsync .DoA2R2 (ctx , & s .Mutex , s .getMessagesSinceLocked , ctx , since )
19
+ return xsync .DoA3R2 (ctx , & s .Mutex , s .getMessagesSinceLocked , ctx , since , limit )
19
20
}
20
21
21
22
func (s * ChatMessagesStorage ) getMessagesSinceLocked (
22
23
ctx context.Context ,
23
24
since time.Time ,
25
+ limit uint ,
24
26
) (_ret []api.ChatMessage , _err error ) {
25
- logger .Tracef (ctx , "getMessagesSinceLocked(ctx, %v)" , since )
26
- defer func () { logger .Tracef (ctx , "/getMessagesSinceLocked(ctx, %v): len:%d, %v" , since , len (_ret ), _err ) }()
27
+ logger .Tracef (ctx , "getMessagesSinceLocked(ctx, %v, %d)" , since , limit )
28
+ defer func () {
29
+ logger .Tracef (ctx , "/getMessagesSinceLocked(ctx, %v, %d): len:%d, %v" , since , limit , len (_ret ), _err )
30
+ }()
27
31
28
32
if len (s .Messages ) == 0 {
29
33
return nil , nil
@@ -46,5 +50,9 @@ func (s *ChatMessagesStorage) getMessagesSinceLocked(
46
50
idx = 0
47
51
}
48
52
53
+ if limit > 0 && len (s .Messages )- idx > int (limit ) {
54
+ idx = len (s .Messages ) - int (limit )
55
+ }
56
+
49
57
return slices .Clone (s .Messages [idx :]), nil
50
58
}
0 commit comments