Class: SourceMonitor::Analytics::ScrapeRecommendations

Inherits:
Object
  • Object
show all
Defined in:
lib/source_monitor/analytics/scrape_recommendations.rb

Instance Method Summary collapse

Constructor Details

#initialize(threshold: SourceMonitor.config.scraping.scrape_recommendation_threshold) ⇒ ScrapeRecommendations

Returns a new instance of ScrapeRecommendations.



6
7
8
# File 'lib/source_monitor/analytics/scrape_recommendations.rb', line 6

def initialize(threshold: SourceMonitor.config.scraping.scrape_recommendation_threshold)
  @threshold = threshold.to_i
end

Instance Method Details

#candidate?(source_id) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/source_monitor/analytics/scrape_recommendations.rb', line 29

def candidate?(source_id)
  candidate_ids.include?(source_id)
end

#candidate_idsObject



18
19
20
# File 'lib/source_monitor/analytics/scrape_recommendations.rb', line 18

def candidate_ids
  @candidate_ids ||= relation.pluck(:id)
end

#candidate_ids_for(source_ids) ⇒ Object



22
23
24
25
26
27
# File 'lib/source_monitor/analytics/scrape_recommendations.rb', line 22

def candidate_ids_for(source_ids)
  ids = Array(source_ids).map { |source_id| source_id.respond_to?(:id) ? source_id.id : source_id }.compact
  return [] if ids.empty?

  relation.where(id: ids).pluck(:id)
end

#candidates_countObject



14
15
16
# File 'lib/source_monitor/analytics/scrape_recommendations.rb', line 14

def candidates_count
  @candidates_count ||= relation.count
end

#filter_paramsObject



33
34
35
36
37
38
39
# File 'lib/source_monitor/analytics/scrape_recommendations.rb', line 33

def filter_params
  {
    "scraping_enabled_eq" => "false",
    "active_eq" => "true",
    "avg_feed_words_lt" => threshold.to_s
  }
end

#relationObject



10
11
12
# File 'lib/source_monitor/analytics/scrape_recommendations.rb', line 10

def relation
  @relation ||= SourceMonitor::Queries::ScrapeCandidatesQuery.new(threshold: threshold).call
end