author | Marcel Hlopko <marcel@hlopko.com> |
Tue, 17 Nov 2015 15:05:38 +0100 | |
changeset 306 | 8050d8d3681f |
parent 303 | ce55fabc46a0 |
permissions | -rw-r--r-- |
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 | 30 |
# == Schema Information |
31 |
# |
|
32 |
# Table name: benchmark_infos |
|
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 | 41 |
# |
42 |