2018-08-15 02:19:32 +09:00
|
|
|
# frozen_string_literal: true
|
2023-02-20 14:58:28 +09:00
|
|
|
|
2018-08-15 02:19:32 +09:00
|
|
|
# == Schema Information
|
|
|
|
#
|
|
|
|
# Table name: status_stats
|
|
|
|
#
|
2024-10-28 13:55:18 +09:00
|
|
|
# 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)
|
2018-08-15 02:19:32 +09:00
|
|
|
#
|
|
|
|
|
|
|
|
class StatusStat < ApplicationRecord
|
|
|
|
belongs_to :status, inverse_of: :status_stat
|
2018-10-28 14:42:34 +09:00
|
|
|
|
2024-10-28 13:55:18 +09:00
|
|
|
before_validation :clamp_untrusted_counts
|
|
|
|
|
|
|
|
MAX_UNTRUSTED_COUNT = 100_000_000
|
|
|
|
|
2022-05-27 03:32:48 +09:00
|
|
|
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
|
2024-10-28 13:55:18 +09:00
|
|
|
|
|
|
|
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
|
2018-08-15 02:19:32 +09:00
|
|
|
end
|