diff options
author | Alex S <alex.strizhakov@gmail.com> | 2019-04-14 21:37:05 +0700 |
---|---|---|
committer | Alex S <alex.strizhakov@gmail.com> | 2019-04-25 13:38:24 +0700 |
commit | 324c9c8ab54b7df59534f6a8160d4a20d5b79722 (patch) | |
tree | 6fdab6bc777dc6f86ca5dbe8c62963f6304bd77f | |
parent | 73d01857e3ff1737a4ea733a3f6c6419379ce8e8 (diff) | |
download | pleroma-324c9c8ab54b7df59534f6a8160d4a20d5b79722.tar.gz pleroma-324c9c8ab54b7df59534f6a8160d4a20d5b79722.zip |
migrate user.bookmarks to separate table
-rw-r--r-- | lib/pleroma/user.ex | 2 | ||||
-rw-r--r-- | priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs | 21 |
2 files changed, 23 insertions, 0 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index c5b1ddc5d..3831588f9 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -55,6 +55,8 @@ defmodule Pleroma.User do field(:search_type, :integer, virtual: true) field(:tags, {:array, :string}, default: []) field(:last_refreshed_at, :naive_datetime_usec) + # TODO: add migration to delete `bookmarks` field from DB + field(:old_bookmarks, {:array, :string}, default: [], source: :bookmarks) has_many(:bookmarks, Bookmark) has_many(:notifications, Notification) has_many(:registrations, Registration) diff --git a/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs b/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs new file mode 100644 index 000000000..1930fc3cf --- /dev/null +++ b/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs @@ -0,0 +1,21 @@ +defmodule Pleroma.Repo.Migrations.MigrateOldBookmarks do + use Ecto.Migration + 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) + end) + end) + end + + def down do + execute("TRUNCATE TABLE bookmarks") + end +end |