web/app/models/benchmark_info.rb
author Marcel Hlopko <marcel@hlopko.com>
Tue, 17 Nov 2015 15:05:38 +0100
changeset 306 8050d8d3681f
parent 303 ce55fabc46a0
permissions -rw-r--r--
Optimize CompareController#filter

class BenchmarkInfo < ActiveRecord::Base

  has_many :benchmark_results, dependent: :destroy, inverse_of: :benchmark_info

  validates_presence_of :name, :benchmark_class, :benchmark_selector

  def self.from_json(data)
    bench_info = BenchmarkInfo.find_by(name: data["name"])
    unless bench_info
      bench_info = BenchmarkInfo.create!(
        name:               data["name"],
        benchmark_class:    data["class"],
        benchmark_selector: data["selector"],
        description:        data["description"]
      )
    end

    bench_info
  end

  def latest_result_for_configuration(configuration)
    benchmark_results
      .select { |r| r.benchmark_batch.benchmark_configuration_id == configuration.id }
      .sort { |r, s| r.performed_at <=> s.performed_at }
      .first
  end

end

# == Schema Information
#
# Table name: benchmark_infos
#
#  id                 :integer          not null, primary key
#  benchmark_class    :string(255)
#  benchmark_selector :string(255)
#  description        :text
#  created_at         :datetime
#  updated_at         :datetime
#  name               :string(255)
#