diff options
author | Kurtis Rainbolt-Greene <me@kurtisrainboltgreene.name> | 2017-01-07 18:09:00 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-07 18:09:00 -0800 |
commit | abe3ae1cc2c21243b570dbe34f54ea7b568cc629 (patch) | |
tree | df3394761d197c8b8714f987d4709438e06b2ff0 /app/models | |
parent | 6d097d559b7fc2b7a6fc365a1205dde0602b9e50 (diff) |
Simplifying followers mappings
Deduplicating some logic and switching to pluck, to avoid pulling the entire model in memory.
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/account.rb | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/app/models/account.rb b/app/models/account.rb index 41fcc864b..1b87210c7 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -175,19 +175,23 @@ class Account < ApplicationRecord end def following_map(target_account_ids, account_id) - Follow.where(target_account_id: target_account_ids).where(account_id: account_id).map { |f| [f.target_account_id, true] }.to_h + follow_mapping(Follow.where(target_account_id: target_account_ids, account_id: account_id), :target_account_id) end def followed_by_map(target_account_ids, account_id) - Follow.where(account_id: target_account_ids).where(target_account_id: account_id).map { |f| [f.account_id, true] }.to_h + follow_mapping(Follow.where(account_id: target_account_ids, target_account_id: account_id), :account_id) end def blocking_map(target_account_ids, account_id) - Block.where(target_account_id: target_account_ids).where(account_id: account_id).map { |b| [b.target_account_id, true] }.to_h + follow_mapping(Block.where(target_account_id: target_account_ids, account_id: account_id), :target_account_id) end def requested_map(target_account_ids, account_id) - FollowRequest.where(target_account_id: target_account_ids).where(account_id: account_id).map { |r| [r.target_account_id, true] }.to_h + follow_mapping(FollowRequest.where(target_account_id: target_account_ids, account_id: account_id), :target_account_id) + end + + private def follow_mapping(query, field) + query.pluck(field).inject({}) { |mapping, id| mapping[id] = true } end end |