mirror of https://github.com/mastodon/mastodon
Fix follow recommendation biased towards older accounts (#17126)
parent
0fc73bbcb9
commit
bda8e4f815
@ -0,0 +1,24 @@
|
|||||||
|
class UpdateAccountSummariesToVersion2 < ActiveRecord::Migration[6.1]
|
||||||
|
def up
|
||||||
|
reapplication_follow_recommendations_v2 do
|
||||||
|
drop_view :account_summaries, materialized: true
|
||||||
|
create_view :account_summaries, version: 2, materialized: { no_data: true }
|
||||||
|
safety_assured { add_index :account_summaries, :account_id, unique: true }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
reapplication_follow_recommendations_v2 do
|
||||||
|
drop_view :account_summaries, materialized: true
|
||||||
|
create_view :account_summaries, version: 1, materialized: { no_data: true }
|
||||||
|
safety_assured { add_index :account_summaries, :account_id, unique: true }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def reapplication_follow_recommendations_v2
|
||||||
|
drop_view :follow_recommendations, materialized: true
|
||||||
|
yield
|
||||||
|
create_view :follow_recommendations, version: 2, materialized: { no_data: true }
|
||||||
|
safety_assured { add_index :follow_recommendations, :account_id, unique: true }
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,23 @@
|
|||||||
|
SELECT
|
||||||
|
accounts.id AS account_id,
|
||||||
|
mode() WITHIN GROUP (ORDER BY language ASC) AS language,
|
||||||
|
mode() WITHIN GROUP (ORDER BY sensitive ASC) AS sensitive
|
||||||
|
FROM accounts
|
||||||
|
CROSS JOIN LATERAL (
|
||||||
|
SELECT
|
||||||
|
statuses.account_id,
|
||||||
|
statuses.language,
|
||||||
|
statuses.sensitive
|
||||||
|
FROM statuses
|
||||||
|
WHERE statuses.account_id = accounts.id
|
||||||
|
AND statuses.deleted_at IS NULL
|
||||||
|
AND statuses.reblog_of_id IS NULL
|
||||||
|
ORDER BY statuses.id DESC
|
||||||
|
LIMIT 20
|
||||||
|
) t0
|
||||||
|
WHERE accounts.suspended_at IS NULL
|
||||||
|
AND accounts.silenced_at IS NULL
|
||||||
|
AND accounts.moved_to_account_id IS NULL
|
||||||
|
AND accounts.discoverable = 't'
|
||||||
|
AND accounts.locked = 'f'
|
||||||
|
GROUP BY accounts.id
|
Loading…
Reference in New Issue