diff options
| author | Sachin Joshi <satchin.joshi@gmail.com> | 2019-05-01 00:21:30 +0545 |
|---|---|---|
| committer | Sachin Joshi <satchin.joshi@gmail.com> | 2019-05-01 00:21:30 +0545 |
| commit | cd6da3606b0170b1a5c7d64b96f1621896cc0930 (patch) | |
| tree | 76086dd4145017de644bdeb17a389bb4d8c7a298 /priv/repo/migrations | |
| parent | 963d5774af7efb57fa306b3ac164049f8958a72c (diff) | |
| parent | 77690b9d03facf74483e3379f72b5b51c9f1bd4e (diff) | |
| download | pleroma-cd6da3606b0170b1a5c7d64b96f1621896cc0930.tar.gz pleroma-cd6da3606b0170b1a5c7d64b96f1621896cc0930.zip | |
Merge branch 'develop' into bugfix/web-notification-special-char
Diffstat (limited to 'priv/repo/migrations')
| -rw-r--r-- | priv/repo/migrations/20190413082658_create_bookmarks.exs | 14 | ||||
| -rw-r--r-- | priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs | 29 |
2 files changed, 43 insertions, 0 deletions
diff --git a/priv/repo/migrations/20190413082658_create_bookmarks.exs b/priv/repo/migrations/20190413082658_create_bookmarks.exs new file mode 100644 index 000000000..38b108158 --- /dev/null +++ b/priv/repo/migrations/20190413082658_create_bookmarks.exs @@ -0,0 +1,14 @@ +defmodule Pleroma.Repo.Migrations.CreateBookmarks do + use Ecto.Migration + + def change do + create table(:bookmarks) do + add(:user_id, references(:users, type: :uuid, on_delete: :delete_all)) + add(:activity_id, references(:activities, type: :uuid, on_delete: :delete_all)) + + timestamps() + end + + create(unique_index(:bookmarks, [:user_id, :activity_id])) + end +end 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..134b7c6f7 --- /dev/null +++ b/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs @@ -0,0 +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 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) + + alter table(:users) do + remove(:bookmarks) + end + end +end |
