36 lines
944 B
Elixir
36 lines
944 B
Elixir
|
defmodule Pleroma.Repo.Migrations.MigrateFollowingRelationships 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
|