Started adding test model/routes/views; removed a bit of the old paradigm with tying results directly to hardware
This commit is contained in:
		| @@ -3,7 +3,7 @@ | ||||
| # Hardware - database model for PC hardware | ||||
| class Hardware < Sequel::Model(:hardware) | ||||
|  | ||||
|   one_to_many :results | ||||
|   one_to_many :tests | ||||
|  | ||||
|   def bench_results | ||||
|     br = {} | ||||
|   | ||||
| @@ -3,3 +3,4 @@ | ||||
| require_relative 'hardware' | ||||
| require_relative 'benchmark' | ||||
| require_relative 'result' | ||||
| require_relative 'test' | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| # Result - database model for benchmark results | ||||
| class Result < Sequel::Model | ||||
|  | ||||
|   many_to_one :hardware | ||||
|   many_to_one :test | ||||
|   many_to_one :benchmark | ||||
|  | ||||
|   def formatted_score | ||||
|   | ||||
							
								
								
									
										10
									
								
								src/models/test.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/models/test.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| # frozen_string_literal: true | ||||
|  | ||||
| # Test - database model for hardware tests | ||||
| class Test < Sequel::Model | ||||
|  | ||||
|   one_to_many :result | ||||
|   many_to_one :hardware | ||||
|   many_to_many :benchmark | ||||
|  | ||||
| end | ||||
| @@ -5,3 +5,4 @@ require_relative 'hardware' | ||||
| require_relative 'benchmark' | ||||
| require_relative 'result' | ||||
| require_relative 'reports' | ||||
| require_relative 'test' | ||||
|   | ||||
							
								
								
									
										70
									
								
								src/routes/test.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								src/routes/test.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | ||||
| # 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.order(:name).all() | ||||
|     benchmarks = Benchmark.order(:name).all() | ||||
|     erb :'test/add', locals: { | ||||
|       title: 'Add Test', | ||||
|       hardware: hardware, | ||||
|       benchmarks: benchmarks | ||||
|     } | ||||
|   end | ||||
|   post '/test/add' do | ||||
|     tst = Test.create( | ||||
|       name: params[:test_name], | ||||
|       hardware_id: params[:test_hardware], | ||||
|       description: params[:test_description] | ||||
|     ) | ||||
|  | ||||
|     # create an array of the selected benchmarks | ||||
|     benchmarks = Array(params[:test_benchmarks]) | ||||
|     # associate the benchmarks to the test | ||||
|     benchmarks.each do |b| | ||||
|       tst.add_benchmark(b) | ||||
|     end | ||||
|  | ||||
|     redirect "/test/#{tst.id}" | ||||
|   end | ||||
|  | ||||
|   get '/test/:test_id' do | ||||
|     tst = Test.where(id: params[:test_id]).first() | ||||
|     benchmarks = Benchmark.order(:name).all() | ||||
|     erb :'test/view', locals: { | ||||
|       title: tst.name, | ||||
|       test: tst, | ||||
|       benchmarks: benchmarks | ||||
|     } | ||||
|   end | ||||
|  | ||||
|   get '/test/:hardware_id/edit' do | ||||
|     hardware = Hardware.where(id: params[:hardware_id]).first() | ||||
|     erb :'test/edit', locals: { | ||||
|       title: "Editing: #{hardware.name}", | ||||
|       hardware: hardware | ||||
|     } | ||||
|   end | ||||
|  | ||||
|   post '/test/:hardware_id/edit' do | ||||
|     hardware = Hardware.where(id: params[:hardware_id]).first() | ||||
|  | ||||
|     hardware.update( | ||||
|       name: params[:hardware_name], | ||||
|       type: params[:hardware_type] | ||||
|     ) | ||||
|  | ||||
|     redirect "/hardware/#{hardware.id}" | ||||
|   end | ||||
|  | ||||
| end | ||||
		Reference in New Issue
	
	Block a user