mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-12-23 16:40:29 +00:00
3e09b7c5ae
This makes ecto execute only the latter one.
35 lines
951 B
Elixir
35 lines
951 B
Elixir
defmodule Pleroma.Repo.Migrations.MigrateMissingFollowingRelationships do
|
|
use Ecto.Migration
|
|
|
|
def change do
|
|
execute(import_pending_follows_from_activities(), "")
|
|
end
|
|
|
|
defp import_pending_follows_from_activities do
|
|
"""
|
|
INSERT INTO
|
|
following_relationships (
|
|
follower_id,
|
|
following_id,
|
|
state,
|
|
inserted_at,
|
|
updated_at
|
|
)
|
|
SELECT
|
|
followers.id,
|
|
following.id,
|
|
activities.data ->> 'state',
|
|
(activities.data ->> 'published') :: timestamp,
|
|
now()
|
|
FROM
|
|
activities
|
|
JOIN users AS followers ON (activities.actor = followers.ap_id)
|
|
JOIN users AS following ON (activities.data ->> 'object' = following.ap_id)
|
|
WHERE
|
|
activities.data ->> 'type' = 'Follow'
|
|
AND activities.data ->> 'state' = 'pending'
|
|
ORDER BY activities.updated_at DESC
|
|
ON CONFLICT DO NOTHING
|
|
"""
|
|
end
|
|
end
|