X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=priv%2Frepo%2Fmigrations%2F20190414125034_migrate_old_bookmarks.exs;h=b6f0ac66b3dde98f6a1e95d9b38edeceed381788;hb=3aa25b008d145bc7bfda907bca3b327753380728;hp=09f02c22326d1a1d32f6a32bec25a528efc32f15;hpb=58711a79d0cc58b9a19c15b7abd2e6ec1b8b5c41;p=akkoma diff --git a/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs b/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs index 09f02c223..b6f0ac66b 100644 --- a/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs +++ b/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs @@ -3,27 +3,36 @@ defmodule Pleroma.Repo.Migrations.MigrateOldBookmarks do import Ecto.Query alias Pleroma.Activity alias Pleroma.Bookmark - alias Pleroma.User alias Pleroma.Repo def up do query = - from(u in User, + from(u in "users", where: u.local == true, - where: fragment("array_length(?, 1)", u.old_bookmarks) > 0, - select: %{id: u.id, old_bookmarks: u.old_bookmarks} + where: fragment("array_length(?, 1)", u.bookmarks) > 0, + select: %{id: u.id, bookmarks: u.bookmarks} ) Repo.stream(query) - |> 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) + |> 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 - execute("TRUNCATE TABLE bookmarks") + alter table(:users) do + add(:bookmarks, {:array, :string}, null: false, default: []) + end end end