Merge branch 'refactor/following-relationships' into 'develop'
authorlain <lain@soykaf.club>
Mon, 28 Oct 2019 07:27:45 +0000 (07:27 +0000)
committerlain <lain@soykaf.club>
Mon, 28 Oct 2019 07:27:45 +0000 (07:27 +0000)
Move following relationships to a separate table

Closes #1233

See merge request pleroma/pleroma!1814

1  2 
lib/pleroma/user.ex
test/web/activity_pub/transmogrifier_test.exs

index 5d3f5572192966b7fff3d0c99a678e25b3058c2d,03c02a47f3402662633e52b2b0a2c322a164f970..40171620ed3901ab60857b17e9490772dc627ac5
@@@ -216,14 -216,56 +216,8 @@@ defmodule Pleroma.User d
      from(u in query, where: u.deactivated != ^true)
    end
  
-   def following_count(%User{following: []}), do: 0
-   def following_count(%User{} = user) do
-     user
-     |> get_friends_query()
-     |> Repo.aggregate(:count, :id)
-   end
+   defdelegate following_count(user), to: FollowingRelationship
  
 -  @info_fields [
 -    :banner,
 -    :background,
 -    :source_data,
 -    :note_count,
 -    :follower_count,
 -    :following_count,
 -    :locked,
 -    :confirmation_pending,
 -    :password_reset_pending,
 -    :confirmation_token,
 -    :default_scope,
 -    :blocks,
 -    :domain_blocks,
 -    :mutes,
 -    :muted_reblogs,
 -    :muted_notifications,
 -    :subscribers,
 -    :deactivated,
 -    :no_rich_text,
 -    :ap_enabled,
 -    :is_moderator,
 -    :is_admin,
 -    :show_role,
 -    :settings,
 -    :magic_key,
 -    :uri,
 -    :hide_followers_count,
 -    :hide_follows_count,
 -    :hide_followers,
 -    :hide_follows,
 -    :hide_favorites,
 -    :unread_conversation_count,
 -    :pinned_activities,
 -    :email_notifications,
 -    :mascot,
 -    :emoji,
 -    :pleroma_settings_store,
 -    :fields,
 -    :raw_fields,
 -    :discoverable,
 -    :invisible,
 -    :skip_thread_containment,
 -    :notification_settings
 -  ]
 -
 -  def info_fields, do: @info_fields
 -
    defp truncate_fields_param(params) do
      if Map.has_key?(params, :fields) do
        Map.put(params, :fields, Enum.map(params[:fields], &truncate_field/1))
      end
    end
  
 -  def increment_unread_conversation_count(_, _), do: :noop
 +  def increment_unread_conversation_count(_, user), do: {:ok, user}
  
-   def remove_duplicated_following(%User{following: following} = user) do
-     uniq_following = Enum.uniq(following)
-     if length(following) == length(uniq_following) do
-       {:ok, user}
-     else
-       user
-       |> update_changeset(%{following: uniq_following})
-       |> update_and_set_cache()
-     end
-   end
    @spec get_users_from_set([String.t()], boolean()) :: [User.t()]
    def get_users_from_set(ap_ids, local_only \\ true) do
      criteria = %{ap_id: ap_ids, deactivated: false}