56 lines
1.5 KiB
Julia
56 lines
1.5 KiB
Julia
module CreateTableResults
|
|
|
|
import SearchLight.Migrations: create_table, column, columns, primary_key, add_index, drop_table, add_indices
|
|
|
|
function up()
|
|
create_table(:surveys) do
|
|
[
|
|
primary_key(:id),
|
|
column(:name, :text),
|
|
column(:repr, :text, not_null=true)
|
|
]
|
|
end
|
|
|
|
create_table(:questions) do
|
|
[
|
|
column(:survey, :integer, not_null=true),
|
|
column(:id, :text, not_null=true),
|
|
column(:type, :text, not_null=true),
|
|
column(:prompt, :text, not_null=true),
|
|
column(:input, :text, not_null=true)
|
|
]
|
|
end
|
|
|
|
create_table(:responses) do
|
|
[
|
|
column(:survey, :integer, not_null=true),
|
|
column(:id, :integer, not_null=true),
|
|
column(:exip, :integer, not_null=true),
|
|
column(:started, :text, not_null=true),
|
|
column(:completed, :text),
|
|
column(:page, :integer, not_null=true),
|
|
]
|
|
end
|
|
|
|
create_table(:results) do
|
|
[
|
|
column(:survey, :integer, not_null=true),
|
|
column(:response, :integer, not_null=true),
|
|
column(:question, :integer, not_null=true),
|
|
column(:value, :text, not_null=true)
|
|
]
|
|
end
|
|
|
|
add_index(:questions, :survey)
|
|
add_index(:results, :survey)
|
|
add_indices(:results, [:response, :question])
|
|
end
|
|
|
|
function down()
|
|
drop_table(:surveys)
|
|
drop_table(:questions)
|
|
drop_table(:results)
|
|
end
|
|
|
|
end
|