[bugfix] Sort follows chronologically (#2801)

The id on the follows table is not a ULID, but a random ID. Sorting on
them results in a completely random order. Instead, sort on created_at,
which sould result in a stable and intended sort order.

Fixes: #2769

Co-authored-by: kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>
This commit is contained in:
Daenney 2024-04-03 15:06:39 +02:00 committed by GitHub
parent 15ede4c1ea
commit 8ed1b8142c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 6 additions and 6 deletions

View file

@ -331,7 +331,7 @@ func newSelectFollows(db *bun.DB, accountID string) *bun.SelectQuery {
Table("follows"). Table("follows").
Column("id"). Column("id").
Where("? = ?", bun.Ident("account_id"), accountID). Where("? = ?", bun.Ident("account_id"), accountID).
OrderExpr("? DESC", bun.Ident("id")) OrderExpr("? DESC", bun.Ident("created_at"))
} }
// newSelectLocalFollows returns a new select query for all rows in the follows table with // newSelectLocalFollows returns a new select query for all rows in the follows table with
@ -349,7 +349,7 @@ func newSelectLocalFollows(db *bun.DB, accountID string) *bun.SelectQuery {
Column("id"). Column("id").
Where("? IS NULL", bun.Ident("domain")), Where("? IS NULL", bun.Ident("domain")),
). ).
OrderExpr("? DESC", bun.Ident("id")) OrderExpr("? DESC", bun.Ident("created_at"))
} }
// newSelectFollowers returns a new select query for all rows in the follows table with target_account_id = accountID. // newSelectFollowers returns a new select query for all rows in the follows table with target_account_id = accountID.
@ -358,7 +358,7 @@ func newSelectFollowers(db *bun.DB, accountID string) *bun.SelectQuery {
Table("follows"). Table("follows").
Column("id"). Column("id").
Where("? = ?", bun.Ident("target_account_id"), accountID). Where("? = ?", bun.Ident("target_account_id"), accountID).
OrderExpr("? DESC", bun.Ident("id")) OrderExpr("? DESC", bun.Ident("created_at"))
} }
// newSelectLocalFollowers returns a new select query for all rows in the follows table with // newSelectLocalFollowers returns a new select query for all rows in the follows table with
@ -376,7 +376,7 @@ func newSelectLocalFollowers(db *bun.DB, accountID string) *bun.SelectQuery {
Column("id"). Column("id").
Where("? IS NULL", bun.Ident("domain")), Where("? IS NULL", bun.Ident("domain")),
). ).
OrderExpr("? DESC", bun.Ident("id")) OrderExpr("? DESC", bun.Ident("created_at"))
} }
// newSelectBlocks returns a new select query for all rows in the blocks table with account_id = accountID. // newSelectBlocks returns a new select query for all rows in the blocks table with account_id = accountID.

View file

@ -47,8 +47,8 @@ func (suite *FollowingTestSuite) TestGetFollowing() {
suite.Equal(`{ suite.Equal(`{
"@context": "https://www.w3.org/ns/activitystreams", "@context": "https://www.w3.org/ns/activitystreams",
"items": [ "items": [
"http://localhost:8080/users/1happyturtle", "http://localhost:8080/users/admin",
"http://localhost:8080/users/admin" "http://localhost:8080/users/1happyturtle"
], ],
"type": "Collection" "type": "Collection"
}`, string(fJson)) }`, string(fJson))