Add ability to set a default post expiry (#321)
[akkoma] / priv / repo / migrations / 20190303120636_update_user_note_counters.exs
1 defmodule Pleroma.Repo.Migrations.UpdateUserNoteCounters do
2 use Ecto.Migration
3
4 @public "https://www.w3.org/ns/activitystreams#Public"
5
6 def up do
7 execute("""
8 WITH public_note_count AS (
9 SELECT
10 data->>'actor' AS actor,
11 count(id) AS count
12 FROM objects
13 WHERE data->>'type' = 'Note' AND (
14 data->'cc' ? '#{@public}' OR data->'to' ? '#{@public}'
15 )
16 GROUP BY data->>'actor'
17 )
18 UPDATE users AS u
19 SET "info" = jsonb_set(u.info, '{note_count}', o.count::varchar::jsonb, true)
20 FROM public_note_count AS o
21 WHERE u.ap_id = o.actor
22 """)
23 end
24
25 def down do
26 execute("""
27 WITH public_note_count AS (
28 SELECT
29 data->>'actor' AS actor,
30 count(id) AS count
31 FROM objects
32 WHERE data->>'type' = 'Note'
33 GROUP BY data->>'actor'
34 )
35 UPDATE users AS u
36 SET "info" = jsonb_set(u.info, '{note_count}', o.count::varchar::jsonb, true)
37 FROM public_note_count AS o
38 WHERE u.ap_id = o.actor
39 """)
40 end
41 end