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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
233
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
     1
class BenchmarkInfo < ActiveRecord::Base
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
     2
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
     3
  has_many :benchmark_results, dependent: :destroy, inverse_of: :benchmark_info
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
     4
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
     5
  validates_presence_of :name, :benchmark_class, :benchmark_selector
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
     6
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
     7
  def self.from_json(data)
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
     8
    bench_info = BenchmarkInfo.find_by(name: data["name"])
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
     9
    unless bench_info
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
    10
      bench_info = BenchmarkInfo.create!(
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
    11
        name:               data["name"],
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
    12
        benchmark_class:    data["class"],
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
    13
        benchmark_selector: data["selector"],
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
    14
        description:        data["description"]
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
    15
      )
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
    16
    end
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
    17
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
    18
    bench_info
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
    19
  end
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
    20
236
2565b32e93b3 Fix n+1 on compare page, get rid of unused code
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
    21
  def latest_result_for_configuration(configuration)
306
8050d8d3681f Optimize CompareController#filter
Marcel Hlopko <marcel@hlopko.com>
parents: 303
diff changeset
    22
    benchmark_results
8050d8d3681f Optimize CompareController#filter
Marcel Hlopko <marcel@hlopko.com>
parents: 303
diff changeset
    23
      .select { |r| r.benchmark_batch.benchmark_configuration_id == configuration.id }
8050d8d3681f Optimize CompareController#filter
Marcel Hlopko <marcel@hlopko.com>
parents: 303
diff changeset
    24
      .sort { |r, s| r.performed_at <=> s.performed_at }
8050d8d3681f Optimize CompareController#filter
Marcel Hlopko <marcel@hlopko.com>
parents: 303
diff changeset
    25
      .first
236
2565b32e93b3 Fix n+1 on compare page, get rid of unused code
Marcel Hlopko <marcel@hlopko.com>
parents: 233
diff changeset
    26
  end
237
195fca969b9a Add scopes for common behavior
Marcel Hlopko <marcel@hlopko.com>
parents: 236
diff changeset
    27
233
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
    28
end
67d68cf6356c Fix n+1 on results/configurations/:id
Marcel Hlopko <marcel@hlopko.com>
parents: 225
diff changeset
    29
44
0429d91be03e add some models
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    30
# == Schema Information
0429d91be03e add some models
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    31
#
0429d91be03e add some models
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    32
# Table name: benchmark_infos
0429d91be03e add some models
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    33
#
65
a37ce193f555 add basic import support (text, file, push via POST)
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 64
diff changeset
    34
#  id                 :integer          not null, primary key
a37ce193f555 add basic import support (text, file, push via POST)
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 64
diff changeset
    35
#  benchmark_class    :string(255)
a37ce193f555 add basic import support (text, file, push via POST)
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 64
diff changeset
    36
#  benchmark_selector :string(255)
a37ce193f555 add basic import support (text, file, push via POST)
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 64
diff changeset
    37
#  description        :text
a37ce193f555 add basic import support (text, file, push via POST)
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 64
diff changeset
    38
#  created_at         :datetime
a37ce193f555 add basic import support (text, file, push via POST)
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 64
diff changeset
    39
#  updated_at         :datetime
110
02126b7e1cbb imports fixed and nicely working
Marcel Hlopko <marcel.hlopko@gmail.com>
parents: 108
diff changeset
    40
#  name               :string(255)
44
0429d91be03e add some models
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    41
#
0429d91be03e add some models
Marcel Hlopko <marcel.hlopko@gmail.com>
parents:
diff changeset
    42