Merge pull request #1414 from consul/indexes

adds polls related indexes and foreign keys
This commit is contained in:
Raimond Garcia
2017-02-12 16:57:07 +01:00
committed by GitHub
7 changed files with 85 additions and 21 deletions

View File

@@ -0,0 +1,36 @@
class AddPollsRelatedIndexes < ActiveRecord::Migration
def change
add_index :poll_booth_assignments, :booth_id
add_index :poll_booth_assignments, :poll_id
add_index :poll_final_recounts, :officer_assignment_id
add_index :poll_officer_assignments, :booth_assignment_id
add_index :poll_officer_assignments, :officer_id
add_index :poll_officer_assignments, [:officer_id, :date]
add_index :poll_officers, :user_id
add_index :poll_voters, :booth_assignment_id
add_index :poll_voters, :officer_assignment_id
add_index :polls, [:starts_at, :ends_at]
add_foreign_key :poll_answers, :poll_questions, column: :question_id
add_foreign_key :poll_booth_assignments, :polls
add_foreign_key :poll_final_recounts, :poll_booth_assignments, column: :booth_assignment_id
add_foreign_key :poll_final_recounts, :poll_officer_assignments, column: :officer_assignment_id
add_foreign_key :poll_null_results, :poll_booth_assignments, column: :booth_assignment_id
add_foreign_key :poll_null_results, :poll_officer_assignments, column: :officer_assignment_id
add_foreign_key :poll_white_results, :poll_booth_assignments, column: :booth_assignment_id
add_foreign_key :poll_white_results, :poll_officer_assignments, column: :officer_assignment_id
add_foreign_key :poll_officer_assignments, :poll_booth_assignments, column: :booth_assignment_id
add_foreign_key :poll_partial_results, :poll_booth_assignments, column: :booth_assignment_id
add_foreign_key :poll_partial_results, :poll_officer_assignments, column: :officer_assignment_id
add_foreign_key :poll_voters, :polls
add_foreign_key :poll_recounts, :poll_booth_assignments, column: :booth_assignment_id
add_foreign_key :poll_recounts, :poll_officer_assignments, column: :officer_assignment_id
end
end

View File

@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20170208160130) do
ActiveRecord::Schema.define(version: 20170212123435) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -395,6 +395,9 @@ ActiveRecord::Schema.define(version: 20170208160130) do
t.datetime "updated_at", null: false
end
add_index "poll_booth_assignments", ["booth_id"], name: "index_poll_booth_assignments_on_booth_id", using: :btree
add_index "poll_booth_assignments", ["poll_id"], name: "index_poll_booth_assignments_on_poll_id", using: :btree
create_table "poll_booths", force: :cascade do |t|
t.string "name"
t.string "location"
@@ -412,6 +415,7 @@ ActiveRecord::Schema.define(version: 20170208160130) do
end
add_index "poll_final_recounts", ["booth_assignment_id"], name: "index_poll_final_recounts_on_booth_assignment_id", using: :btree
add_index "poll_final_recounts", ["officer_assignment_id"], name: "index_poll_final_recounts_on_officer_assignment_id", using: :btree
create_table "poll_null_results", force: :cascade do |t|
t.integer "author_id"
@@ -438,11 +442,17 @@ ActiveRecord::Schema.define(version: 20170208160130) do
t.string "user_data_log", default: ""
end
add_index "poll_officer_assignments", ["booth_assignment_id"], name: "index_poll_officer_assignments_on_booth_assignment_id", using: :btree
add_index "poll_officer_assignments", ["officer_id", "date"], name: "index_poll_officer_assignments_on_officer_id_and_date", using: :btree
add_index "poll_officer_assignments", ["officer_id"], name: "index_poll_officer_assignments_on_officer_id", using: :btree
create_table "poll_officers", force: :cascade do |t|
t.integer "user_id"
t.integer "failed_census_calls_count", default: 0
end
add_index "poll_officers", ["user_id"], name: "index_poll_officers_on_user_id", using: :btree
create_table "poll_partial_results", force: :cascade do |t|
t.integer "question_id"
t.integer "author_id"
@@ -512,7 +522,9 @@ ActiveRecord::Schema.define(version: 20170208160130) do
t.integer "user_id"
end
add_index "poll_voters", ["booth_assignment_id"], name: "index_poll_voters_on_booth_assignment_id", using: :btree
add_index "poll_voters", ["document_number"], name: "index_poll_voters_on_document_number", using: :btree
add_index "poll_voters", ["officer_assignment_id"], name: "index_poll_voters_on_officer_assignment_id", using: :btree
add_index "poll_voters", ["poll_id", "document_number", "document_type"], name: "doc_by_poll", using: :btree
add_index "poll_voters", ["poll_id"], name: "index_poll_voters_on_poll_id", using: :btree
add_index "poll_voters", ["user_id"], name: "index_poll_voters_on_user_id", using: :btree
@@ -540,6 +552,8 @@ ActiveRecord::Schema.define(version: 20170208160130) do
t.boolean "geozone_restricted", default: false
end
add_index "polls", ["starts_at", "ends_at"], name: "index_polls_on_starts_at_and_ends_at", using: :btree
create_table "proposal_notifications", force: :cascade do |t|
t.string "title"
t.text "body"
@@ -856,11 +870,25 @@ ActiveRecord::Schema.define(version: 20170208160130) do
add_foreign_key "moderators", "users"
add_foreign_key "notifications", "users"
add_foreign_key "organizations", "users"
add_foreign_key "poll_answers", "poll_questions", column: "question_id"
add_foreign_key "poll_booth_assignments", "polls"
add_foreign_key "poll_final_recounts", "poll_booth_assignments", column: "booth_assignment_id"
add_foreign_key "poll_final_recounts", "poll_officer_assignments", column: "officer_assignment_id"
add_foreign_key "poll_null_results", "poll_booth_assignments", column: "booth_assignment_id"
add_foreign_key "poll_null_results", "poll_officer_assignments", column: "officer_assignment_id"
add_foreign_key "poll_officer_assignments", "poll_booth_assignments", column: "booth_assignment_id"
add_foreign_key "poll_partial_results", "poll_booth_assignments", column: "booth_assignment_id"
add_foreign_key "poll_partial_results", "poll_officer_assignments", column: "officer_assignment_id"
add_foreign_key "poll_partial_results", "poll_questions", column: "question_id"
add_foreign_key "poll_partial_results", "users", column: "author_id"
add_foreign_key "poll_questions", "polls"
add_foreign_key "poll_questions", "proposals"
add_foreign_key "poll_questions", "users", column: "author_id"
add_foreign_key "poll_recounts", "poll_booth_assignments", column: "booth_assignment_id"
add_foreign_key "poll_recounts", "poll_officer_assignments", column: "officer_assignment_id"
add_foreign_key "poll_voters", "polls"
add_foreign_key "poll_white_results", "poll_booth_assignments", column: "booth_assignment_id"
add_foreign_key "poll_white_results", "poll_officer_assignments", column: "officer_assignment_id"
add_foreign_key "users", "geozones"
add_foreign_key "valuators", "users"
end

View File

@@ -23,18 +23,18 @@ describe :final_recount do
expect(final_recount.count_log).to eq("")
final_recount.count = 33
final_recount.officer_assignment_id = 1
final_recount.officer_assignment = create(:poll_officer_assignment, id: 111)
final_recount.save
final_recount.count = 32
final_recount.officer_assignment_id = 2
final_recount.officer_assignment = create(:poll_officer_assignment, id: 112)
final_recount.save
final_recount.count = 34
final_recount.officer_assignment_id = 3
final_recount.officer_assignment = create(:poll_officer_assignment, id: 113)
final_recount.save
expect(final_recount.officer_assignment_id_log).to eq(":1:2")
expect(final_recount.officer_assignment_id_log).to eq(":111:112")
end
end

View File

@@ -25,19 +25,19 @@ describe Poll::NullResult do
expect(null_result.officer_assignment_id_log).to eq("")
null_result.amount = 33
null_result.officer_assignment_id = 1
null_result.officer_assignment = create(:poll_officer_assignment, id: 101)
null_result.save
null_result.amount = 32
null_result.officer_assignment_id = 2
null_result.officer_assignment = create(:poll_officer_assignment, id: 102)
null_result.save
null_result.amount = 34
null_result.officer_assignment_id = 3
null_result.officer_assignment = create(:poll_officer_assignment, id: 103)
null_result.save
expect(null_result.amount_log).to eq(":33:32")
expect(null_result.officer_assignment_id_log).to eq(":1:2")
expect(null_result.officer_assignment_id_log).to eq(":101:102")
end
it "should update author_id if amount changes" do

View File

@@ -36,19 +36,19 @@ describe Poll::PartialResult do
expect(partial_result.officer_assignment_id_log).to eq("")
partial_result.amount = 33
partial_result.officer_assignment_id = 1
partial_result.officer_assignment = create(:poll_officer_assignment, id: 10)
partial_result.save
partial_result.amount = 32
partial_result.officer_assignment_id = 2
partial_result.officer_assignment = create(:poll_officer_assignment, id: 20)
partial_result.save
partial_result.amount = 34
partial_result.officer_assignment_id = 3
partial_result.officer_assignment = create(:poll_officer_assignment, id: 30)
partial_result.save
expect(partial_result.amount_log).to eq(":33:32")
expect(partial_result.officer_assignment_id_log).to eq(":1:2")
expect(partial_result.officer_assignment_id_log).to eq(":10:20")
end
it "should update author_id if amount changes" do

View File

@@ -23,18 +23,18 @@ describe :recount do
expect(recount.count_log).to eq("")
recount.count = 33
recount.officer_assignment_id = 1
recount.officer_assignment = create(:poll_officer_assignment, id: 11)
recount.save
recount.count = 32
recount.officer_assignment_id = 2
recount.officer_assignment = create(:poll_officer_assignment, id: 12)
recount.save
recount.count = 34
recount.officer_assignment_id = 3
recount.officer_assignment = create(:poll_officer_assignment, id: 13)
recount.save
expect(recount.officer_assignment_id_log).to eq(":1:2")
expect(recount.officer_assignment_id_log).to eq(":11:12")
end
end

View File

@@ -25,19 +25,19 @@ describe Poll::WhiteResult do
expect(white_result.officer_assignment_id_log).to eq("")
white_result.amount = 33
white_result.officer_assignment_id = 1
white_result.officer_assignment = create(:poll_officer_assignment, id: 21)
white_result.save
white_result.amount = 32
white_result.officer_assignment_id = 2
white_result.officer_assignment = create(:poll_officer_assignment, id: 22)
white_result.save
white_result.amount = 34
white_result.officer_assignment_id = 3
white_result.officer_assignment = create(:poll_officer_assignment, id: 23)
white_result.save
expect(white_result.amount_log).to eq(":33:32")
expect(white_result.officer_assignment_id_log).to eq(":1:2")
expect(white_result.officer_assignment_id_log).to eq(":21:22")
end
it "should update author_id if amount changes" do