move to 2.5.5
[anni] / priv / repo / migrations / 20190710125158_add_following_address_from_source_data.exs
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Repo.Migrations.AddFollowingAddressFromSourceData do
6   alias Pleroma.User
7   import Ecto.Query
8   require Logger
9   use Ecto.Migration
10
11   def change do
12     query =
13       User.Query.build(%{
14         external: true,
15         legacy_active: true,
16         order_by: :id
17       })
18       |> select([u], struct(u, [:id, :ap_id, :info]))
19
20     Pleroma.Repo.stream(query)
21     |> Enum.each(fn
22       %{info: %{source_data: source_data}} = user ->
23         Ecto.Changeset.cast(user, %{following_address: source_data["following"]}, [
24           :following_address
25         ])
26         |> Pleroma.Repo.update()
27
28       user ->
29         Logger.warn("User #{user.id} / #{user.nickname} does not seem to have source_data")
30     end)
31   end
32 end