Reworked database schema from scratch

This commit is contained in:
Gregory Ballantine 2023-12-07 12:59:32 -05:00
parent 394a8ef91f
commit b819f4f1cd
5 changed files with 59 additions and 61 deletions

View File

@ -5,6 +5,7 @@ Sequel.migration do
primary_key :id primary_key :id
String :name, null: false String :name, null: false
String :type, null: false String :type, null: false
String :description, text: true
DateTime :created_at, default: Sequel::CURRENT_TIMESTAMP DateTime :created_at, default: Sequel::CURRENT_TIMESTAMP
DateTime :updated_at, default: Sequel::CURRENT_TIMESTAMP DateTime :updated_at, default: Sequel::CURRENT_TIMESTAMP
end end
@ -12,28 +13,16 @@ Sequel.migration do
create_table(:benchmarks) do create_table(:benchmarks) do
primary_key :id primary_key :id
String :name, null: false String :name, null: false
String :description String :description, text: true
String :scoring, null: false String :scoring, null: false
DateTime :created_at, default: Sequel::CURRENT_TIMESTAMP DateTime :created_at, default: Sequel::CURRENT_TIMESTAMP
DateTime :updated_at, default: Sequel::CURRENT_TIMESTAMP DateTime :updated_at, default: Sequel::CURRENT_TIMESTAMP
end end
create_table(:results) do
primary_key :id
String :score, null: false
DateTime :created_at, default: Sequel::CURRENT_TIMESTAMP
DateTime :updated_at, default: Sequel::CURRENT_TIMESTAMP
end
alter_table(:results) do
add_foreign_key :hardware_id, :hardware
add_foreign_key :benchmark_id, :benchmarks
end
end end
down do down do
drop_table(:hardware) drop_table(:hardware)
drop_table(:benchmarks) drop_table(:benchmarks)
drop_table(:results)
end end
end end

View File

@ -1,17 +0,0 @@
Sequel.migration do
up do
alter_table(:results) do
add_column :type, String, null: false, default: 'fps'
add_column :minimum_score, String
add_column :maximum_score, String
end
end
down do
drop_column :results, :type
drop_column :results, :minimum_score
drop_column :results, :maximum_score
end
end

View File

@ -0,0 +1,28 @@
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

View File

@ -0,0 +1,29 @@
Sequel.migration do
up do
# create tests table
create_table(:results) do
primary_key :id
foreign_key :benchmark_id, :benchmarks
Float :avg_score, null: false
Float :min_score
Float :max_score
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
end

View File

@ -1,31 +0,0 @@
Sequel.migration do
up do
# create tests table
create_table(:tests) do
primary_key :id
String :date_tag, null: false
DateTime :created_at, default: Sequel::CURRENT_TIMESTAMP
DateTime :updated_at, default: Sequel::CURRENT_TIMESTAMP
end
# add foreign keys to tests table
alter_table(:tests) do
add_foreign_key(:benchmark_id, :benchmarks, null: false)
add_foreign_key(:hardware_id, :hardware, null: false)
end
# add the test ID link to results table; remove old links to hardware and benchmarks tables
alter_table(:results) do
add_foreign_key(:test_id, :tests, null: false)
drop_column(:benchmark_id)
drop_column(:hardware_id)
end
end
down do
drop_column(:results, :test_id)
drop_table(:tests)
end
end