2022-02-25 23:11:42 -07:00
|
|
|
# Pleroma: A lightweight social networking server
|
2023-01-01 04:11:47 -07:00
|
|
|
# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/>
|
2022-02-25 23:11:42 -07:00
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
2019-10-29 07:56:24 -06:00
|
|
|
defmodule Pleroma.Repo.Migrations.MigrateMissingFollowingRelationships do
|
2019-10-29 04:16:34 -06:00
|
|
|
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
|