logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 40ea07cd2fff2477055499edbb439df18c4c1aef
parent: 81673b81366ee1779802a9fec7f5119e664cd8ce
Author: William Pitcock <nenolod@dereferenced.org>
Date:   Wed, 29 Aug 2018 08:43:24 +0000

migrations: add migration to fill in recipients_to/recipients_cc fields

Diffstat:

Apriv/repo/migrations/20180829082743_fill_recipients_to_and_cc_fields_in_activities.exs25+++++++++++++++++++++++++
1 file changed, 25 insertions(+), 0 deletions(-)

diff --git a/priv/repo/migrations/20180829082743_fill_recipients_to_and_cc_fields_in_activities.exs b/priv/repo/migrations/20180829082743_fill_recipients_to_and_cc_fields_in_activities.exs @@ -0,0 +1,25 @@ +defmodule Pleroma.Repo.Migrations.FillRecipientsToAndCcFieldsInActivities do + use Ecto.Migration + alias Pleroma.{Repo, Activity} + + def up do + max = Repo.aggregate(Activity, :max, :id) + if max do + IO.puts("#{max} activities") + chunks = 0..(round(max / 10_000)) + + Enum.each(chunks, fn (i) -> + min = i * 10_000 + max = min + 10_000 + execute(""" + update activities set recipients_to = array(select jsonb_array_elements_text(data->'to')) where id > #{min} and id <= #{max} and jsonb_typeof(data->'to') = 'array'; + """) + |> IO.inspect + execute(""" + update activities set recipients_cc = array(select jsonb_array_elements_text(data->'cc')) where id > #{min} and id <= #{max} and jsonb_typeof(data->'cc') = 'array'; + """) + |> IO.inspect + end) + end + end +end