[PATCH] fix empty CHATHISTORY TARGETS
Export this patch
Currently, if times sent to `CHATHISTORY TARGETS` are reversed (e.g.
current time occurs first, and initial time occurs second) then no
targets will be returned from the database backend.
Changes have been tested with the sqlite backend.
---
msgstore/db.go | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
diff --git a/msgstore/db.go b/msgstore/db.go
index 18a428a..0e1ebdc 100644
--- a/msgstore/db.go
+++ b/msgstore/db.go
@@ -97,12 +97,24 @@ func (ms *dbMessageStore) Append(network *database.Network, entity string, msg *
}
func (ms *dbMessageStore) ListTargets(ctx context.Context, network *database.Network, start, end time.Time, limit int, events bool) ([]ChatHistoryTarget, error) {
- l, err := ms.db.ListMessageLastPerTarget(ctx, network.ID, &database.MessageOptions{
- AfterTime: start,
- BeforeTime: end,
- Limit: limit,
- Events: events,
- })
+ var opts *database.MessageOptions
+ if start.Before(end) {
+ opts = &database.MessageOptions{
+ AfterTime: start,
+ BeforeTime: end,
+ Limit: limit,
+ Events: events,
+ }
+ } else {
+ opts = &database.MessageOptions{
+ AfterTime: end,
+ BeforeTime: start,
+ Limit: limit,
+ Events: events,
+ TakeLast: true,
+ }
+ }
+ l, err := ms.db.ListMessageLastPerTarget(ctx, network.ID, opts);
if err != nil {
return nil, err
}
--
2.42.0
Good catch! Thanks a lot for debugging and fixing this! Pushed.