summaryrefslogtreecommitdiff
path: root/priv/repo/migrations/20190710125158_add_following_address_from_source_data.exs
blob: 44f9891b1cc06c103d7a329035b9b27d18640bf7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
defmodule Pleroma.Repo.Migrations.AddFollowingAddressFromSourceData do
  alias Pleroma.User
  import Ecto.Query
  require Logger
  use Ecto.Migration

  def change do
    query =
      User.Query.build(%{
        external: true,
        legacy_active: true,
        order_by: :id
      })
      |> select([u], struct(u, [:id, :ap_id, :info]))

    Pleroma.Repo.stream(query)
    |> Enum.each(fn
      %{info: %{source_data: source_data}} = user ->
        Ecto.Changeset.cast(user, %{following_address: source_data["following"]}, [
          :following_address
        ])
        |> Pleroma.Repo.update()

      user ->
        Logger.warn("User #{user.id} / #{user.nickname} does not seem to have source_data")
    end)
  end
end