mirror of
https://github.com/mastodon/mastodon.git
synced 2024-12-22 23:20:44 +01:00
43 lines
1.3 KiB
Ruby
43 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# == Schema Information
|
|
#
|
|
# Table name: status_stats
|
|
#
|
|
# id :bigint(8) not null, primary key
|
|
# status_id :bigint(8) not null
|
|
# replies_count :bigint(8) default(0), not null
|
|
# reblogs_count :bigint(8) default(0), not null
|
|
# favourites_count :bigint(8) default(0), not null
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# untrusted_favourites_count :bigint(8)
|
|
# untrusted_reblogs_count :bigint(8)
|
|
#
|
|
|
|
class StatusStat < ApplicationRecord
|
|
belongs_to :status, inverse_of: :status_stat
|
|
|
|
before_validation :clamp_untrusted_counts
|
|
|
|
MAX_UNTRUSTED_COUNT = 100_000_000
|
|
|
|
def replies_count
|
|
[attributes['replies_count'], 0].max
|
|
end
|
|
|
|
def reblogs_count
|
|
[attributes['reblogs_count'], 0].max
|
|
end
|
|
|
|
def favourites_count
|
|
[attributes['favourites_count'], 0].max
|
|
end
|
|
|
|
private
|
|
|
|
def clamp_untrusted_counts
|
|
self.untrusted_favourites_count = untrusted_favourites_count.to_i.clamp(0, MAX_UNTRUSTED_COUNT) if untrusted_favourites_count.present?
|
|
self.untrusted_reblogs_count = untrusted_reblogs_count.to_i.clamp(0, MAX_UNTRUSTED_COUNT) if untrusted_reblogs_count.present?
|
|
end
|
|
end
|