aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAriadne Conill <ariadne@dereferenced.org>2019-08-26 02:54:06 +0000
committerAriadne Conill <ariadne@dereferenced.org>2019-08-26 02:54:06 +0000
commitc755d197f71553ec242837f937c9b281a2d347c7 (patch)
treed9e595519a27e8c32da0a49d5584166ed33d910e
parentcb3772f0cec0d3368601b7f5990298fa847af7eb (diff)
downloadpleroma-c755d197f71553ec242837f937c9b281a2d347c7.tar.gz
repo: add migration to fill recipient_users column
-rw-r--r--priv/repo/migrations/20190825233255_fill_recipient_users_in_activities.exs31
1 files changed, 31 insertions, 0 deletions
diff --git a/priv/repo/migrations/20190825233255_fill_recipient_users_in_activities.exs b/priv/repo/migrations/20190825233255_fill_recipient_users_in_activities.exs
new file mode 100644
index 000000000..351c66b01
--- /dev/null
+++ b/priv/repo/migrations/20190825233255_fill_recipient_users_in_activities.exs
@@ -0,0 +1,31 @@
+defmodule Pleroma.Repo.Migrations.FillRecipientUsersInActivities do
+ use Ecto.Migration
+
+ alias Pleroma.RepoStreamer
+ alias Pleroma.User
+
+ import Ecto.Query
+
+ def up do
+ # copy users without as:Public
+ execute("""
+ update activities set recipient_users = array_remove(recipients, 'https://www.w3.org/ns/activitystreams#Public');
+ """)
+
+ # strip followers collections
+ from(
+ u in User,
+ where: not(is_nil(u.follower_address))
+ )
+ |> RepoStreamer.chunk_stream(512)
+ |> Stream.each(fn chunk ->
+ chunk
+ |> Enum.each(fn %User{} = u ->
+ execute("update activities set recipient_users = array_remove(recipient_users, '#{u.follower_address}') where recipient_users && array['#{u.follower_address}'::varchar]")
+ end)
+ end)
+ |> Stream.run()
+ end
+
+ def down, do: :ok
+end