28 lines
671 B
Ruby
28 lines
671 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class UserStatCountUpdater
|
||
|
class << self
|
||
|
def increment!(post, user_stat: nil)
|
||
|
update!(post, user_stat: user_stat)
|
||
|
end
|
||
|
|
||
|
def decrement!(post, user_stat: nil)
|
||
|
update!(post, user_stat: user_stat, action: :decrement!)
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def update!(post, user_stat: nil, action: :increment!)
|
||
|
return if !post.topic
|
||
|
return if post.topic.private_message?
|
||
|
stat = user_stat || post.user.user_stat
|
||
|
|
||
|
if post.is_first_post?
|
||
|
stat.public_send(action, :topic_count)
|
||
|
elsif post.post_type == Post.types[:regular]
|
||
|
stat.public_send(action, :post_count)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|