diff options
| author | Maksim Pechnikov <parallel588@gmail.com> | 2020-09-01 09:37:08 +0300 |
|---|---|---|
| committer | Maksim Pechnikov <parallel588@gmail.com> | 2020-09-01 09:37:08 +0300 |
| commit | 0d5088c2b83fafd9d8da1f1b04936f831ac5ee87 (patch) | |
| tree | 3aee11cf619f81b25bc276ea8faddd853fe570c1 /priv | |
| parent | e0eb90f62a5c8cc14c8fd7fc82ab54342f6fe209 (diff) | |
| download | pleroma-0d5088c2b83fafd9d8da1f1b04936f831ac5ee87.tar.gz pleroma-0d5088c2b83fafd9d8da1f1b04936f831ac5ee87.zip | |
remove `unread_conversation_count` from User
Diffstat (limited to 'priv')
| -rw-r--r-- | priv/repo/migrations/20200831114918_remove_unread_conversation_count_from_user.exs | 38 | ||||
| -rw-r--r-- | priv/repo/migrations/20200831115854_add_unread_index_to_conversation_participation.exs | 12 |
2 files changed, 50 insertions, 0 deletions
diff --git a/priv/repo/migrations/20200831114918_remove_unread_conversation_count_from_user.exs b/priv/repo/migrations/20200831114918_remove_unread_conversation_count_from_user.exs new file mode 100644 index 000000000..b7bdb9166 --- /dev/null +++ b/priv/repo/migrations/20200831114918_remove_unread_conversation_count_from_user.exs @@ -0,0 +1,38 @@ +defmodule Pleroma.Repo.Migrations.RemoveUnreadConversationCountFromUser do + use Ecto.Migration + import Ecto.Query + alias Pleroma.Repo + + def up do + alter table(:users) do + remove_if_exists(:unread_conversation_count, :integer) + end + end + + def down do + alter table(:users) do + add_if_not_exists(:unread_conversation_count, :integer, default: 0) + end + + flush() + recalc_unread_conversation_count() + end + + defp recalc_unread_conversation_count do + participations_subquery = + from( + p in "conversation_participations", + where: p.read == false, + group_by: p.user_id, + select: %{user_id: p.user_id, unread_conversation_count: count(p.id)} + ) + + from( + u in "users", + join: p in subquery(participations_subquery), + on: p.user_id == u.id, + update: [set: [unread_conversation_count: p.unread_conversation_count]] + ) + |> Repo.update_all([]) + end +end diff --git a/priv/repo/migrations/20200831115854_add_unread_index_to_conversation_participation.exs b/priv/repo/migrations/20200831115854_add_unread_index_to_conversation_participation.exs new file mode 100644 index 000000000..68771c655 --- /dev/null +++ b/priv/repo/migrations/20200831115854_add_unread_index_to_conversation_participation.exs @@ -0,0 +1,12 @@ +defmodule Pleroma.Repo.Migrations.AddUnreadIndexToConversationParticipation do + use Ecto.Migration + + def change do + create( + index(:conversation_participations, [:user_id], + where: "read = false", + name: "unread_conversation_participation_count_index" + ) + ) + end +end |
