X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=priv%2Frepo%2Fmigrations%2F20190414125034_migrate_old_bookmarks.exs;h=134b7c6f769285e08d0dd724e0b87e003a0b2042;hb=71fa7eeb6fdc7cf2087a32fb515ad11b7bf90c01;hp=1930fc3cf30a3894ebc234093bc5b4a209311bf0;hpb=324c9c8ab54b7df59534f6a8160d4a20d5b79722;p=akkoma diff --git a/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs b/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs index 1930fc3cf..134b7c6f7 100644 --- a/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs +++ b/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs @@ -1,21 +1,29 @@ defmodule Pleroma.Repo.Migrations.MigrateOldBookmarks do use Ecto.Migration + import Ecto.Query alias Pleroma.Activity alias Pleroma.Bookmark alias Pleroma.User alias Pleroma.Repo - def up do - Repo.all(User) - |> Enum.each(fn user -> - Enum.each(user.old_bookmarks, fn id -> - activity = Activity.get_create_by_object_ap_id(id) - {:ok, _} = Bookmark.create(user.id, activity.id) + def change do + query = + from(u in User, + where: u.local == true, + where: fragment("array_length(bookmarks, 1)") > 0, + select: %{id: u.id, bookmarks: fragment("bookmarks")} + ) + + Repo.stream(query) + |> Enum.each(fn %{id: user_id, bookmarks: bookmarks} -> + Enum.each(bookmarks, fn ap_id -> + activity = Activity.get_create_by_object_ap_id(ap_id) + unless is_nil(activity), do: {:ok, _} = Bookmark.create(user_id, activity.id) end) end) - end - def down do - execute("TRUNCATE TABLE bookmarks") + alter table(:users) do + remove(:bookmarks) + end end end