From 3a4773c3c2bd0bbef244eb519b07208da9108e49 Mon Sep 17 00:00:00 2001 From: dcc Date: Sat, 2 Sep 2023 00:52:52 -0700 Subject: First --- .../20190414125034_migrate_old_bookmarks.exs | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs (limited to 'priv/repo/migrations/20190414125034_migrate_old_bookmarks.exs') 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 +# 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 -- cgit v1.2.3