| @@ 4-16 (lines=13) @@ | ||
| 1 | # frozen_string_literal: true |
|
| 2 | ||
| 3 | # Table to represent study events in an arm |
|
| 4 | class CreateStudyEvents < ActiveRecord::Migration[5.1] |
|
| 5 | def change |
|
| 6 | create_table :study_events do |t| |
|
| 7 | t.string :name, null: false, index: true |
|
| 8 | t.integer :order, null: false, index: true, default: 1 |
|
| 9 | t.references :arm, null: false, foreign_key: true, index: true |
|
| 10 | t.datetime :event_date, null: false, default: -> { 'CURRENT_TIMESTAMP' } |
|
| 11 | t.timestamps null: false, default: -> { 'CURRENT_TIMESTAMP' } |
|
| 12 | end |
|
| 13 | ||
| 14 | add_index :study_events, %i[arm_id name], unique: true, name: 'index_by_arm_name' |
|
| 15 | end |
|
| 16 | end |
|
| 17 | ||
| @@ 4-14 (lines=11) @@ | ||
| 1 | # frozen_string_literal: true |
|
| 2 | ||
| 3 | # Creates tables for association class between participants and surveys |
|
| 4 | class CreateSurveyParticipants < ActiveRecord::Migration[5.1] |
|
| 5 | def change |
|
| 6 | create_table :survey_participants do |t| |
|
| 7 | t.references :participant, null: false, foreign_key: true |
|
| 8 | t.references :survey, null: false, foreign_key: true |
|
| 9 | t.timestamps null: false, default: -> { 'CURRENT_TIMESTAMP' } |
|
| 10 | end |
|
| 11 | ||
| 12 | add_index :survey_participants, %i[participant_id survey_id], unique: true, name: 'index_by_participant_survey' |
|
| 13 | end |
|
| 14 | end |
|
| 15 | ||
| @@ 4-17 (lines=14) @@ | ||
| 1 | # frozen_string_literal: true |
|
| 2 | ||
| 3 | # Creates table for association class between assessments and instruments |
|
| 4 | class CreateAssessmentInstruments < ActiveRecord::Migration[5.1] |
|
| 5 | def change |
|
| 6 | create_table :assessment_instruments do |t| |
|
| 7 | t.references :assessment, null: false, foreign_key: true |
|
| 8 | t.references :instrument, null: false, foreign_key: true |
|
| 9 | t.timestamps null: false, default: -> { 'CURRENT_TIMESTAMP' } |
|
| 10 | end |
|
| 11 | ||
| 12 | add_index :assessment_instruments, |
|
| 13 | %i[assessment_id instrument_id], |
|
| 14 | unique: true, |
|
| 15 | name: 'index_by_assessment_instrument' |
|
| 16 | end |
|
| 17 | end |
|
| 18 | ||
| @@ 4-15 (lines=12) @@ | ||
| 1 | # frozen_string_literal: true |
|
| 2 | ||
| 3 | # Migration to add assessment scores table |
|
| 4 | class CreateScores < ActiveRecord::Migration[5.1] |
|
| 5 | def change |
|
| 6 | create_table :scores, comment: 'Scores table' do |t| |
|
| 7 | t.references :assessment, null: false, index: true |
|
| 8 | t.string :name, null: false, index: true |
|
| 9 | t.integer :score, null: false, default: 0 |
|
| 10 | t.timestamps null: false, default: -> { 'CURRENT_TIMESTAMP' } |
|
| 11 | end |
|
| 12 | ||
| 13 | add_index :scores, %i[assessment_id name], unique: true, name: 'index_by_assessment_name' |
|
| 14 | end |
|
| 15 | end |
|
| 16 | ||