# frozen_string_literal: true class FollowRecommendationFilter KEYS = %i( language status ).freeze attr_reader :params, :language def initialize(params) @language = params.delete('language') || I18n.locale @params = params end def results if params['status'] == 'suppressed' Account.joins(:follow_recommendation_suppression).order(FollowRecommendationSuppression.arel_table[:id].desc).to_a else account_ids = Redis.current.zrevrange("follow_recommendations:#{@language}", 0, -1).map(&:to_i) accounts = Account.where(id: account_ids).index_by(&:id) account_ids.map { |id| accounts[id] }.compact end end end