X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=priv%2Frepo%2Fmigrations%2F20190414125034_migrate_old_bookmarks.exs;h=b6f0ac66b3dde98f6a1e95d9b38edeceed381788;hb=d15aa9d9503e59b3cd0731394855781f435ec63c;hp=ebe69696e6ff68f797b2bffecd1504d600d05367;hpb=3c4cab9be18ff543d025177b418ddd0b16050e68;p=akkoma diff --git a/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs b/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs index ebe69696e..b6f0ac66b 100644 --- a/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs +++ b/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs @@ -3,22 +3,25 @@ defmodule Pleroma.Repo.Migrations.MigrateOldBookmarks do import Ecto.Query alias Pleroma.Activity alias Pleroma.Bookmark - alias Pleroma.User alias Pleroma.Repo - def change do + def up do query = - from(u in User, + from(u in "users", where: u.local == true, - where: fragment("array_length(bookmarks, 1)") > 0, - select: %{id: u.id, bookmarks: fragment("bookmarks")} + 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 = Activity.get_create_by_object_ap_id(ap_id) - {:ok, _} = Bookmark.create(user_id, activity.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) @@ -26,4 +29,10 @@ defmodule Pleroma.Repo.Migrations.MigrateOldBookmarks do remove(:bookmarks) end end + + def down do + alter table(:users) do + add(:bookmarks, {:array, :string}, null: false, default: []) + end + end end