diff options
| author | dcc <dcc@logografos.com> | 2023-09-02 00:52:52 -0700 |
|---|---|---|
| committer | dcc <dcc@logografos.com> | 2023-09-02 00:52:52 -0700 |
| commit | 3a4773c3c2bd0bbef244eb519b07208da9108e49 (patch) | |
| tree | 973567a6f3abb37bfb0f785b1cad14ed55840ef5 /priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs | |
| download | anni-3a4773c3c2bd0bbef244eb519b07208da9108e49.tar.gz anni-3a4773c3c2bd0bbef244eb519b07208da9108e49.tar.bz2 anni-3a4773c3c2bd0bbef244eb519b07208da9108e49.zip | |
First
Diffstat (limited to 'priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs')
| -rw-r--r-- | priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs | 42 |
1 files changed, 42 insertions, 0 deletions
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 0000000..4fb7591 --- /dev/null +++ b/priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs @@ -0,0 +1,42 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.MigrateOldBookmarks do + use Ecto.Migration + import Ecto.Query + alias Pleroma.Activity + alias Pleroma.Bookmark + alias Pleroma.Repo + + def up do + query = + from(u in "users", + where: u.local == true, + 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 = + 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 + alter table(:users) do + add(:bookmarks, {:array, :string}, null: false, default: []) + end + end +end |
