Add option to modify HTTP pool size
[akkoma] / priv / repo / migrations / 20200831114918_remove_unread_conversation_count_from_user.exs
1 defmodule Pleroma.Repo.Migrations.RemoveUnreadConversationCountFromUser do
2 use Ecto.Migration
3 import Ecto.Query
4 alias Pleroma.Repo
5
6 def up do
7 alter table(:users) do
8 remove_if_exists(:unread_conversation_count, :integer)
9 end
10 end
11
12 def down do
13 alter table(:users) do
14 add_if_not_exists(:unread_conversation_count, :integer, default: 0)
15 end
16
17 flush()
18 recalc_unread_conversation_count()
19 end
20
21 defp recalc_unread_conversation_count do
22 participations_subquery =
23 from(
24 p in "conversation_participations",
25 where: p.read == false,
26 group_by: p.user_id,
27 select: %{user_id: p.user_id, unread_conversation_count: count(p.id)}
28 )
29
30 from(
31 u in "users",
32 join: p in subquery(participations_subquery),
33 on: p.user_id == u.id,
34 update: [set: [unread_conversation_count: p.unread_conversation_count]]
35 )
36 |> Repo.update_all([])
37 end
38 end