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
This commit is contained in:
Jeremy Friesen 2021-11-16 11:12:01 -05:00 committed by GitHub
parent f712b796b2
commit f5243ea844
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 7 additions and 5 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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)

View file

@ -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