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)
--- /dev/null
+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