From 0c72282559fffa06e533de9eed375c9130c0e7a3 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Mon, 10 Mar 2025 13:52:19 +0100 Subject: [performance] Optimize local timeline + local status count queries (#3892) * [performance] Optimize local timeline + local status count queries * remove if not exists from create view --- internal/db/bundb/timeline_test.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'internal/db/bundb/timeline_test.go') diff --git a/internal/db/bundb/timeline_test.go b/internal/db/bundb/timeline_test.go index 756ece2d4..4988ab362 100644 --- a/internal/db/bundb/timeline_test.go +++ b/internal/db/bundb/timeline_test.go @@ -79,6 +79,19 @@ func (suite *TimelineTestSuite) publicCount() int { return publicCount } +func (suite *TimelineTestSuite) localCount() int { + var localCount int + for _, status := range suite.testStatuses { + if status.Visibility == gtsmodel.VisibilityPublic && + status.BoostOfID == "" && + !util.PtrOrZero(status.PendingApproval) && + util.PtrOrValue(status.Local, true) { + localCount++ + } + } + return localCount +} + func (suite *TimelineTestSuite) checkStatuses(statuses []*gtsmodel.Status, maxID string, minID string, expectedLength int) { if l := len(statuses); l != expectedLength { suite.FailNowf("", "expected %d statuses in slice, got %d", expectedLength, l) @@ -123,6 +136,21 @@ func (suite *TimelineTestSuite) TestGetPublicTimeline() { suite.checkStatuses(s, id.Highest, id.Lowest, suite.publicCount()) } +func (suite *TimelineTestSuite) TestGetPublicTimelineLocal() { + ctx := context.Background() + + s, err := suite.db.GetPublicTimeline(ctx, "", "", "", 20, true) + if err != nil { + suite.FailNow(err.Error()) + } + + suite.T().Log(kv.Field{ + K: "statuses", V: s, + }) + + suite.checkStatuses(s, id.Highest, id.Lowest, suite.localCount()) +} + func (suite *TimelineTestSuite) TestGetPublicTimelineWithFutureStatus() { ctx := context.Background() -- cgit v1.2.3