See `[:extensions, output_relationships_in_statuses_by_default]` setting and `with_relationships` param.
		
			
				
	
	
		
			38 lines
		
	
	
	
		
			905 B
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			905 B
		
	
	
	
		
			Elixir
		
	
	
	
	
	
defmodule Pleroma.Repo.Migrations.MigrateOldBookmarks do
 | 
						|
  use Ecto.Migration
 | 
						|
  import Ecto.Query
 | 
						|
  alias Pleroma.Activity
 | 
						|
  alias Pleroma.Bookmark
 | 
						|
  alias Pleroma.Repo
 | 
						|
 | 
						|
  def up do
 | 
						|
    query =
 | 
						|
      from(u in "users",
 | 
						|
        where: u.local == true,
 | 
						|
        where: fragment("array_length(?, 1)", u.bookmarks) > 0,
 | 
						|
        select: %{id: u.id, bookmarks: u.bookmarks}
 | 
						|
      )
 | 
						|
 | 
						|
    Repo.stream(query)
 | 
						|
    |> Enum.each(fn %{id: user_id, bookmarks: bookmarks} ->
 | 
						|
      Enum.each(bookmarks, fn ap_id ->
 | 
						|
        activity =
 | 
						|
          ap_id
 | 
						|
          |> Activity.create_by_object_ap_id()
 | 
						|
          |> Repo.one()
 | 
						|
 | 
						|
        unless is_nil(activity), do: {:ok, _} = Bookmark.create(user_id, activity.id)
 | 
						|
      end)
 | 
						|
    end)
 | 
						|
 | 
						|
    alter table(:users) do
 | 
						|
      remove(:bookmarks)
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def down do
 | 
						|
    alter table(:users) do
 | 
						|
      add(:bookmarks, {:array, :string}, null: false, default: [])
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |