+++ /dev/null
-defmodule Pleroma.Repo.Migrations.UpdateStatusReplyCount do
- use Ecto.Migration
-
- @public "https://www.w3.org/ns/activitystreams#Public"
-
- def up do
- execute("""
- WITH reply_count AS (
- SELECT count(*) AS count, data->>'inReplyTo' AS ap_id
- FROM objects
- WHERE
- data->>'inReplyTo' IS NOT NULL AND
- data->>'type' = 'Note' AND (
- data->'cc' ? '#{@public}' OR
- data->'to' ? '#{@public}')
- GROUP BY data->>'inReplyTo'
- )
- UPDATE objects AS o
- SET "data" = jsonb_set(o.data, '{repliesCount}', reply_count.count::varchar::jsonb, true)
- FROM reply_count
- WHERE reply_count.ap_id = o.data->>'id';
- """)
-
- execute("""
- WITH reply_count AS (SELECT
- count(*) as count,
- data->'object'->>'inReplyTo' AS ap_id
- FROM
- activities
- WHERE
- data->'object'->>'inReplyTo' IS NOT NULL AND
- data->'object'->>'type' = 'Note' AND (
- data->'object'->'cc' ? '#{@public}' OR
- data->'object'->'to' ? '#{@public}')
- GROUP BY
- data->'object'->>'inReplyTo'
- )
- UPDATE activities AS a
- SET "data" = jsonb_set(a.data, '{object, repliesCount}', reply_count.count::varchar::jsonb, true)
- FROM reply_count
- WHERE reply_count.ap_id = a.data->'object'->>'id';
- """)
- end
-
- def down do
- :noop
- end
-end