PERF: Reduce DB queries when serializing ignore/mute information (#8629)

* PERF: Cache ignored and muted user ids in the current_user object
* PERF: Avoid DB queries when checking ignore/mute permission in guardian
This commit is contained in:
David Taylor
2020-01-02 13:04:08 +00:00
committed by GitHub
parent a9f90cdec3
commit 45c5f56ffc
6 changed files with 73 additions and 23 deletions
+5 -5
View File
@@ -463,10 +463,10 @@ class Guardian
UserExport.where(user_id: @user.id, created_at: (Time.zone.now.beginning_of_day..Time.zone.now.end_of_day)).count == 0
end
def can_mute_user?(user_id)
def can_mute_user?(target_user)
can_mute_users? &&
@user.id != user_id &&
User.where(id: user_id, admin: false, moderator: false).exists?
@user.id != target_user.id &&
!target_user.staff?
end
def can_mute_users?
@@ -474,8 +474,8 @@ class Guardian
@user.staff? || @user.trust_level >= TrustLevel.levels[:basic]
end
def can_ignore_user?(user_id)
can_ignore_users? && @user.id != user_id && User.where(id: user_id, admin: false, moderator: false).exists?
def can_ignore_user?(target_user)
can_ignore_users? && @user.id != target_user.id && !target_user.staff?
end
def can_ignore_users?