~emersion/soju-dev

fix empty CHATHISTORY TARGETS v1 APPLIED

Calvin Lee: 1
 fix empty CHATHISTORY TARGETS

 1 files changed, 18 insertions(+), 6 deletions(-)
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~emersion/soju-dev/patches/45566/mbox | git am -3
Learn more about email & git

[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.