web/app/models/benchmark_info.rb
changeset 233 67d68cf6356c
parent 225 1717c8a3eba6
child 236 2565b32e93b3
--- a/web/app/models/benchmark_info.rb	Tue Oct 28 11:09:47 2014 +0100
+++ b/web/app/models/benchmark_info.rb	Tue Oct 28 16:16:56 2014 +0100
@@ -1,3 +1,34 @@
+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 to_results_json_for_configuration(configuration)
+    data = benchmark_results.
+      includes(:benchmark_batch, :benchmark_durations).
+      joins(:benchmark_batch).
+      where("benchmark_batches.benchmark_configuration_id = ?", configuration.id).
+      map(&:to_json)
+
+    { name: name, data: data }
+  end
+end
+
 # == Schema Information
 #
 # Table name: benchmark_infos
@@ -11,21 +42,3 @@
 #  name               :string(255)
 #
 
-class BenchmarkInfo < ActiveRecord::Base
-
-  has_many :benchmark_results, dependent: :destroy, inverse_of: :benchmark_info
-
-  validates_presence_of :name, :benchmark_class, :benchmark_selector
-
-  def BenchmarkInfo.from_json(data)
-      bench_info = BenchmarkInfo.where(name: data["name"]).first
-      bench_info = BenchmarkInfo.create!(
-          name:               data["name"],
-          benchmark_class:    data["class"],
-          benchmark_selector: data["selector"],
-          description:        data["description"]
-      ) unless bench_info
-      return bench_info
-
-  end
-end