From f5243ea844f39710fd29ca964ab53bf4299388c0 Mon Sep 17 00:00:00 2001 From: Jeremy Friesen Date: Tue, 16 Nov 2021 11:12:01 -0500 Subject: [PATCH] Normalizing feed page size (#15326) This commit removes a handful of magic numbers and instead relies on a constant. This has a small impact in that the Basic feed will now return 50 articles instead of 25. However, normalizing the feed pagination window size helps reduce some oddities in reporting. In addition, this might be something we consider giving administrators the ability to set (with default options, because we shouldn't allow page sizes of 10_000 as that's a massive memory hog). Related to #14709 --- app/models/article.rb | 2 ++ app/services/articles/feeds/basic.rb | 2 +- app/services/articles/feeds/large_forem_experimental.rb | 2 +- app/services/articles/feeds/latest.rb | 2 +- app/services/articles/feeds/tag.rb | 2 +- app/services/articles/feeds/timeframe.rb | 2 +- 6 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/models/article.rb b/app/models/article.rb index 7c43ed016..42f81cece 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -9,6 +9,8 @@ class Article < ApplicationRecord acts_as_taggable_on :tags resourcify + DEFAULT_FEED_PAGINATION_WINDOW_SIZE = 50 + attr_accessor :publish_under_org attr_writer :series diff --git a/app/services/articles/feeds/basic.rb b/app/services/articles/feeds/basic.rb index 69de65ddb..88f1e909e 100644 --- a/app/services/articles/feeds/basic.rb +++ b/app/services/articles/feeds/basic.rb @@ -1,7 +1,7 @@ module Articles module Feeds class Basic - def initialize(user: nil, number_of_articles: 25, page: 1, tag: nil) + def initialize(user: nil, number_of_articles: Article::DEFAULT_FEED_PAGINATION_WINDOW_SIZE, page: 1, tag: nil) @user = user @number_of_articles = number_of_articles @page = page diff --git a/app/services/articles/feeds/large_forem_experimental.rb b/app/services/articles/feeds/large_forem_experimental.rb index 05d5cf148..93694834e 100644 --- a/app/services/articles/feeds/large_forem_experimental.rb +++ b/app/services/articles/feeds/large_forem_experimental.rb @@ -1,7 +1,7 @@ module Articles module Feeds class LargeForemExperimental - def initialize(user: nil, number_of_articles: 50, page: 1, tag: nil) + def initialize(user: nil, number_of_articles: Article::DEFAULT_FEED_PAGINATION_WINDOW_SIZE, page: 1, tag: nil) @user = user @number_of_articles = number_of_articles @page = page diff --git a/app/services/articles/feeds/latest.rb b/app/services/articles/feeds/latest.rb index e6908df31..3e0182127 100644 --- a/app/services/articles/feeds/latest.rb +++ b/app/services/articles/feeds/latest.rb @@ -3,7 +3,7 @@ module Articles module Latest MINIMUM_SCORE = -20 - def self.call(tag: nil, number_of_articles: 50, page: 1) + def self.call(tag: nil, number_of_articles: Article::DEFAULT_FEED_PAGINATION_WINDOW_SIZE, page: 1) Articles::Feeds::Tag.call(tag) .order(published_at: :desc) .where("score > ?", MINIMUM_SCORE) diff --git a/app/services/articles/feeds/tag.rb b/app/services/articles/feeds/tag.rb index f3751a395..8bdd6015b 100644 --- a/app/services/articles/feeds/tag.rb +++ b/app/services/articles/feeds/tag.rb @@ -1,7 +1,7 @@ module Articles module Feeds module Tag - def self.call(tag = nil, number_of_articles: 50, page: 1) + def self.call(tag = nil, number_of_articles: Article::DEFAULT_FEED_PAGINATION_WINDOW_SIZE, page: 1) articles = if tag.present? if FeatureFlag.enabled?(:optimize_article_tag_query) diff --git a/app/services/articles/feeds/timeframe.rb b/app/services/articles/feeds/timeframe.rb index 944b04e8e..9c65ca214 100644 --- a/app/services/articles/feeds/timeframe.rb +++ b/app/services/articles/feeds/timeframe.rb @@ -1,7 +1,7 @@ module Articles module Feeds module Timeframe - def self.call(timeframe, tag: nil, number_of_articles: 50, page: 1) + def self.call(timeframe, tag: nil, number_of_articles: Article::DEFAULT_FEED_PAGINATION_WINDOW_SIZE, page: 1) articles = ::Articles::Feeds::Tag.call(tag) articles