# frozen_string_literal: true class AiTopicSummarySerializer < ApplicationSerializer attributes :summarized_text, :algorithm, :outdated, :can_regenerate, :new_posts_since_summary, :updated_at def can_regenerate scope.can_request_summary? end def new_posts_since_summary # Postgres uses discrete range types for int4range, which means # (1..2) is stored as (1...3). # # We use Range#max to work around this, which in the case above always returns 2. # Be careful with using Range#end here, it could lead to unexpected results as: # # (1..2).end => 2 # (1...3).end => 3 object.target.highest_post_number.to_i - object.content_range&.max.to_i end end