From 072e15d1e8ca1711309797a29d34984ed4be9b35 Mon Sep 17 00:00:00 2001 From: Calvin Lee Date: Wed, 11 Oct 2023 13:42:20 +0000 Subject: [PATCH] fix empty CHATHISTORY TARGETS 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 289253a..06fdbc9 100644 --- a/msgstore/db.go +++ b/msgstore/db.go @@ -89,12 +89,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 }