web/app/models/runtime.rb
author Marcel Hlopko <marcel.hlopko@gmail.com>
Tue, 25 Jun 2013 22:11:10 +0200
changeset 106 eac4098d544d
child 108 69aa849f6930
permissions -rw-r--r--
huge refactoring to better fit what we agreed on
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
106
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
     1
# == Schema Information
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
     2
#
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
     3
#
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
     4
#  id          :integer          not null, primary key
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
     5
#  name        :string(255)
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
     6
#  language_id :integer
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
     7
#  created_at  :datetime
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
     8
#  updated_at  :datetime
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
     9
#
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    10
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    11
class Runtime < ActiveRecord::Base
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    12
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    13
  belongs_to :language, dependent: :destroy, inverse_of: :runtimes
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    14
  has_many :benchmark_configurations, inverse_of: :runtime
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    15
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    16
  validates_presence_of :language_id, :name
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    17
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    18
  def all_benchmark_infos
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    19
    result = Set.new
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    20
    benchmark_batches.each do |batch|
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    21
      batch.benchmark_results.each { |r| result.add r.benchmark_info }
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    22
    end
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    23
    result
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    24
  end
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    25
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    26
  def all_dates_when_performed
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    27
    SortedSet.new(benchmark_batches.map(&:performed_at).flatten).to_a
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    28
  end
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    29
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    30
  def results_at(time)
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    31
    batch = benchmark_batches.where(performed_at: time).first
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    32
    all_benchmark_infos.map do |info|
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    33
      batch.result_for(info)
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    34
    end
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    35
  end
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    36
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    37
  def results_of(benchmark_info, time)
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    38
    batch_with_given_date = benchmark_batches
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    39
    .where(performed_at: time)
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    40
    .first
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    41
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    42
    if batch_with_given_date
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    43
      batch_with_given_date
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    44
      .benchmark_results(benchmark_info: benchmark_info)
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    45
      .first
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    46
    else
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    47
      nil
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    48
    end
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    49
  end
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    50
eac4098d544d huge refactoring to better fit what we agreed on
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    51
end