diff --git a/Dockerfile.dev b/Dockerfile.dev index bf5f2ed..a3e0daa 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -12,4 +12,4 @@ RUN gem install rake COPY . ./ -ENTRYPOINT ["rake", "server:dev"] +ENTRYPOINT ["bash", "entrypoints/dev.sh"] diff --git a/db/migrations/0003_add_results_table.rb b/db/migrations/0002_add_results_table.rb similarity index 56% rename from db/migrations/0003_add_results_table.rb rename to db/migrations/0002_add_results_table.rb index cdcbab0..414a1d6 100644 --- a/db/migrations/0003_add_results_table.rb +++ b/db/migrations/0002_add_results_table.rb @@ -4,6 +4,7 @@ Sequel.migration do # create tests table create_table(:results) do primary_key :id + foreign_key :hardware_id, :hardware foreign_key :benchmark_id, :benchmarks Float :avg_score, null: false Float :min_score @@ -11,18 +12,9 @@ Sequel.migration do DateTime :created_at, default: Sequel::CURRENT_TIMESTAMP DateTime :updated_at, default: Sequel::CURRENT_TIMESTAMP end - - # create many-to-many table for results and tests - create_table(:tests_results) do - foreign_key :test_id, :tests - foreign_key :result_id, :results - DateTime :created_at, default: Sequel::CURRENT_TIMESTAMP - DateTime :updated_at, default: Sequel::CURRENT_TIMESTAMP - end end down do - drop_table(:tests_results) drop_table(:results) end diff --git a/db/migrations/0002_add_tests_table.rb b/db/migrations/0002_add_tests_table.rb deleted file mode 100644 index 91f56b7..0000000 --- a/db/migrations/0002_add_tests_table.rb +++ /dev/null @@ -1,28 +0,0 @@ -Sequel.migration do - - up do - # create tests table - create_table(:tests) do - primary_key :id - foreign_key :hardware_id, :hardware - String :date_tag, null: false - String :description, text: true - DateTime :created_at, default: Sequel::CURRENT_TIMESTAMP - DateTime :updated_at, default: Sequel::CURRENT_TIMESTAMP - end - - # create many-to-many table for benchmarks and tests - create_table(:tests_benchmarks) do - foreign_key :test_id, :tests - foreign_key :benchmark_id, :benchmarks - DateTime :created_at, default: Sequel::CURRENT_TIMESTAMP - DateTime :updated_at, default: Sequel::CURRENT_TIMESTAMP - end - end - - down do - drop_table(:tests_benchmarks) - drop_table(:tests) - end - -end diff --git a/entrypoints/dev.sh b/entrypoints/dev.sh new file mode 100644 index 0000000..39c792f --- /dev/null +++ b/entrypoints/dev.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if [ ! -f ./data/gamedata.db ]; then + rake db:migrate +fi + +rake server:dev diff --git a/src/models/benchmark.rb b/src/models/benchmark.rb index e941fd3..a5f4a3c 100644 --- a/src/models/benchmark.rb +++ b/src/models/benchmark.rb @@ -3,6 +3,6 @@ # Benchmark - database model for PC benchmarks class Benchmark < Sequel::Model - one_to_many :tests + one_to_many :results end diff --git a/src/models/hardware.rb b/src/models/hardware.rb index a727a62..57b41ab 100644 --- a/src/models/hardware.rb +++ b/src/models/hardware.rb @@ -3,6 +3,6 @@ # Hardware - database model for PC hardware class Hardware < Sequel::Model(:hardware) - one_to_many :tests + one_to_many :results end diff --git a/src/models/init.rb b/src/models/init.rb index 5434fc6..23d49dc 100644 --- a/src/models/init.rb +++ b/src/models/init.rb @@ -3,4 +3,3 @@ require_relative 'hardware' require_relative 'benchmark' require_relative 'result' -require_relative 'test' diff --git a/src/models/result.rb b/src/models/result.rb index ab5927b..d3f8b5f 100644 --- a/src/models/result.rb +++ b/src/models/result.rb @@ -3,7 +3,8 @@ # Result - database model for benchmark results class Result < Sequel::Model - many_to_one :test + many_to_one :hardware + many_to_one :benchmarks def formatted_score return @score diff --git a/src/models/test.rb b/src/models/test.rb deleted file mode 100644 index f93ea0f..0000000 --- a/src/models/test.rb +++ /dev/null @@ -1,30 +0,0 @@ -# frozen_string_literal: true - -# Test - database model for PC hardware tests -class Test < Sequel::Model - - one_to_many :results # link Test model to its related results - many_to_one :benchmark # link Test model back to its benchmark - many_to_one :hardware # link Test model back to hardware used in test - - # formats the name of the test for display in the web UI - def formatted_name - return "#{@date_tag} - #{@hardware.name} / #{@benchmark.name}" - end - - # formats the name of the test for use in a graph - def graph_name - return "#{@hardware.name} (#{@date_tag})" - end - - # determines whether the test has enough results to fulfill the requirement - def valid? - return (@results.length >= $conf.get('testing.minimum_results_required')) - end - - # determines how many results are still missing for a test - def missing_results - return ($conf.get('testing.minimum_results_required') - @results.length) - end - -end diff --git a/src/routes/index.rb b/src/routes/index.rb index 0e6eabf..a5cadf5 100644 --- a/src/routes/index.rb +++ b/src/routes/index.rb @@ -4,12 +4,10 @@ class GameData < Sinatra::Base get '/' do - tests = Test.reverse(:updated_at).limit(10).all() results = Result.reverse(:updated_at).limit(10).all() erb :'index/index', locals: { title: 'Dashboard', - tests: tests, results: results } end diff --git a/src/routes/init.rb b/src/routes/init.rb index 2b57321..f0a92a5 100644 --- a/src/routes/init.rb +++ b/src/routes/init.rb @@ -4,4 +4,3 @@ require_relative 'index' require_relative 'hardware' require_relative 'benchmark' require_relative 'result' -require_relative 'test' diff --git a/src/routes/test.rb b/src/routes/test.rb deleted file mode 100644 index 59df3e7..0000000 --- a/src/routes/test.rb +++ /dev/null @@ -1,53 +0,0 @@ -# frozen_string_literal: true - -# /test routes -class GameData < Sinatra::Base - - get '/test' do - tests = Test.reverse(:updated_at).limit(10).all() - - erb :'test/index', locals: { - title: 'List of Tests', - tests: tests - } - end - - get '/test/add' do - hardware = Hardware.all() - benchmarks = Benchmark.all() - - erb :'test/add', locals: { - title: 'Add Test', - hardware: hardware, - benchmarks: benchmarks - } - end - post '/test/add' do - date_tag = params[:test_date_tag] - - # make sure the date tag field is formatting properly - date_tag = "(#{date_tag}" unless date_tag.start_with?('(') - date_tag += ')' unless date_tag.end_with?(')') - - test = Test.create( - date_tag: date_tag, - hardware_id: params[:test_hardware] - ) - - params[:test_benchmarks].each do |b| - benchmark = Benchmark.where(id: b).first() - test.add_benchmark(benchmark) - end - - redirect "/test/#{test.id}" - end - - get '/test/:test_id' do - test = Test.where(id: params[:test_id]).first() - erb :'test/view', locals: { - title: "Test: #{test.date_tag}", - test: test - } - end - -end diff --git a/views/index/index.erb b/views/index/index.erb index 17ed43e..a5c5fe0 100644 --- a/views/index/index.erb +++ b/views/index/index.erb @@ -1,36 +1,6 @@
- <% if tests.length > 0 %> -
-

Latest tests:

-
-
- - - - - - - - - - <% tests.each do |t| %> - - - - - - <% end %> - -
Hardware testedBenchmark used# results
<%= t.hardware.name %><%= t.benchmark.name %><%= t.results.length %>
-
- <% else %> -
-

I'm sorry, there don't appear to be any tests created yet. Check again later!

-
- <% end %> - <% if results.length > 0 %> -
`` +

Latest benchmark results:

@@ -46,9 +16,8 @@ <% results.each do |r| %> - <%= r.test.name %> - <%= r.test.hardware.name %> - <%= r.test.benchmark.name %> + <%= r.hardware.name %> + <%= r.benchmark.name %> <%= r.formatted_score() %> <% end %> diff --git a/views/partials/navbar.erb b/views/partials/navbar.erb index d71f762..0b6030e 100644 --- a/views/partials/navbar.erb +++ b/views/partials/navbar.erb @@ -4,9 +4,8 @@
  • Dashboard
  • Hardware
  • Benchmarks
  • -
  • Tests
  • Results
  • -
  • Comparisons
  • +
  • Reports
  • diff --git a/views/test/add.erb b/views/test/add.erb deleted file mode 100644 index c99bc3c..0000000 --- a/views/test/add.erb +++ /dev/null @@ -1,46 +0,0 @@ -
    -
    -

    Add new test

    -
    -
    - -
    - -
    -
    -
    - -
    - -
    - -
    -
    - -
    -
    - -
    -
    - - -
    - -
    diff --git a/views/test/index.erb b/views/test/index.erb deleted file mode 100644 index 31bf64e..0000000 --- a/views/test/index.erb +++ /dev/null @@ -1,42 +0,0 @@ -
    -
    -

    List of tests

    -
    - -
    -

    - Add new test -

    -
    -
    - -
    - <% if tests.length > 0 %> -
    - - - - - - - - - - - <% tests.each do |t| %> - - - - - - - <% end %> - -
    Test name# of resultsDate addedDate modified
    <%= t.name %><%= t.results.length %><%= date_format(t.created_at) %><%= date_format(t.updated_at) %>
    -
    - <% else %> -
    -

    I'm sorry, there don't appear to be any tests added yet. Check again later!

    -
    - <% end %> -
    diff --git a/views/test/view.erb b/views/test/view.erb deleted file mode 100644 index 17fdf25..0000000 --- a/views/test/view.erb +++ /dev/null @@ -1,22 +0,0 @@ -
    -
    -

    class="invalid"<% end %>><%= test.formatted_name %>

    - <% unless test.valid? %> -

    Missing <%= test.missing_results %> results!

    - <% end %> -
    - -
    -

    Test results

    - - <% if test.results.length > 0 %> -
      - <% test.results.each do |res| %> -
    • - <% end %> -
    - <% else %> -

    There are no results

    - <% end %> -
    -