class Kimurai::Dashboard::Run

Public Instance Methods

difference_between_previous_run() click to toggle source
# File lib/kimurai/dashboard/models/run.rb, line 34
def difference_between_previous_run
  previous_run = Run.where(spider_name: spider_name).reverse_order(:id).first(Sequel[:id] < id)
  return unless previous_run

  {
    visits: {
      requests: {
        current: visits["requests"],
        previous: previous_run.visits["requests"],
        difference: calculate_difference(visits["requests"], previous_run.visits["requests"])
      },
      responses: {
        current: visits["responses"],
        previous: previous_run.visits["responses"],
        difference: calculate_difference(visits["responses"], previous_run.visits["responses"])
      }
    },
    items: {
      sent: {
        current: items["sent"],
        previous: previous_run.items["sent"],
        difference: calculate_difference(items["sent"], previous_run.items["sent"])
      },
      processed: {
        current: items["processed"],
        previous: previous_run.items["processed"],
        difference: calculate_difference(items["processed"], previous_run.items["processed"])
      }
    },
    previous_run_id: previous_run.id
  }
end
latest?() click to toggle source
# File lib/kimurai/dashboard/models/run.rb, line 22
def latest?
  Run.where(spider_name: spider_name).last&.id == id
end
log_file() click to toggle source
# File lib/kimurai/dashboard/models/run.rb, line 26
def log_file
  if latest?
    session ? { available: true } : { available: false, reason: "run is not in session" }
  else
    { available: false, reason: "run is not latest" }
  end
end
session_id(id) click to toggle source
# File lib/kimurai/dashboard/models/run.rb, line 17
def session_id(id)
  filter(session_id: id)
end
spider_id(id) click to toggle source
# File lib/kimurai/dashboard/models/run.rb, line 13
def spider_id(id)
  filter(spider_id: id)
end

Private Instance Methods

calculate_difference(current, previous) click to toggle source
# File lib/kimurai/dashboard/models/run.rb, line 69
def calculate_difference(current, previous)
  return if current == 0 || previous == 0
  (((current - previous).to_r / previous) * 100).to_f.round(1)
end