From: Andy Allan Date: Wed, 14 Mar 2018 08:15:39 +0000 (+0800) Subject: Remove cascading deletes, add another foreign key, and switch index around. X-Git-Tag: live~2984^2~25 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/5310c7000c232cd48f48fe473beeca7f4ff02b53 Remove cascading deletes, add another foreign key, and switch index around. --- diff --git a/app/models/issue.rb b/app/models/issue.rb index d13f297a9..00ee934f7 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -17,19 +17,21 @@ # # Indexes # -# index_issues_on_reportable_id_and_reportable_type (reportable_id,reportable_type) +# index_issues_on_reportable_type_and_reportable_id (reportable_type,reportable_id) # index_issues_on_reported_user_id (reported_user_id) # index_issues_on_updated_by (updated_by) # # Foreign Keys # -# issues_reported_user_id_fkey (reported_user_id => users.id) ON DELETE => cascade -# issues_updated_by_fkey (updated_by => users.id) ON DELETE => cascade +# issues_reported_user_id_fkey (reported_user_id => users.id) +# issues_resolved_by_fkey (resolved_by => users.id) +# issues_updated_by_fkey (updated_by => users.id) # class Issue < ActiveRecord::Base belongs_to :reportable, :polymorphic => true belongs_to :reported_user, :class_name => "User", :foreign_key => :reported_user_id + belongs_to :user_resolved, :class_name => "User", :foreign_key => :resolved_by belongs_to :user_updated, :class_name => "User", :foreign_key => :updated_by has_many :reports, :dependent => :destroy diff --git a/app/models/issue_comment.rb b/app/models/issue_comment.rb index 2968078b3..3a5894cb3 100644 --- a/app/models/issue_comment.rb +++ b/app/models/issue_comment.rb @@ -16,8 +16,8 @@ # # Foreign Keys # -# issue_comments_issue_id_fkey (issue_id => issues.id) ON DELETE => cascade -# issue_comments_user_id (user_id => users.id) ON DELETE => cascade +# issue_comments_issue_id_fkey (issue_id => issues.id) +# issue_comments_user_id_fkey (user_id => users.id) # class IssueComment < ActiveRecord::Base diff --git a/app/models/report.rb b/app/models/report.rb index 816b8a421..63296a094 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -3,8 +3,8 @@ # Table name: reports # # id :integer not null, primary key -# issue_id :integer -# user_id :integer +# issue_id :integer not null +# user_id :integer not null # details :text not null # category :string not null # created_at :datetime not null @@ -17,8 +17,8 @@ # # Foreign Keys # -# reports_issue_id_fkey (issue_id => issues.id) ON DELETE => cascade -# reports_user_id_fkey (user_id => users.id) ON DELETE => cascade +# reports_issue_id_fkey (issue_id => issues.id) +# reports_user_id_fkey (user_id => users.id) # class Report < ActiveRecord::Base diff --git a/db/migrate/20160822153055_create_issues_and_reports.rb b/db/migrate/20160822153055_create_issues_and_reports.rb index cd0dc7a9f..aa308ef68 100644 --- a/db/migrate/20160822153055_create_issues_and_reports.rb +++ b/db/migrate/20160822153055_create_issues_and_reports.rb @@ -13,11 +13,12 @@ class CreateIssuesAndReports < ActiveRecord::Migration[5.0] t.timestamps :null => false end - add_foreign_key :issues, :users, :column => :reported_user_id, :name => "issues_reported_user_id_fkey", :on_delete => :cascade - add_foreign_key :issues, :users, :column => :updated_by, :name => "issues_updated_by_fkey", :on_delete => :cascade + add_foreign_key :issues, :users, :column => :reported_user_id, :name => "issues_reported_user_id_fkey" + add_foreign_key :issues, :users, :column => :resolved_by, :name => "issues_resolved_by_fkey" + add_foreign_key :issues, :users, :column => :updated_by, :name => "issues_updated_by_fkey" add_index :issues, :reported_user_id - add_index :issues, [:reportable_id, :reportable_type] + add_index :issues, [:reportable_type, :reportable_id] add_index :issues, :updated_by create_table :reports do |t| @@ -28,8 +29,8 @@ class CreateIssuesAndReports < ActiveRecord::Migration[5.0] t.timestamps :null => false end - add_foreign_key :reports, :issues, :name => "reports_issue_id_fkey", :on_delete => :cascade - add_foreign_key :reports, :users, :column => :user_id, :name => "reports_user_id_fkey", :on_delete => :cascade + add_foreign_key :reports, :issues, :name => "reports_issue_id_fkey" + add_foreign_key :reports, :users, :column => :user_id, :name => "reports_user_id_fkey" add_index :reports, :user_id add_index :reports, :issue_id @@ -41,8 +42,8 @@ class CreateIssuesAndReports < ActiveRecord::Migration[5.0] t.timestamps :null => false end - add_foreign_key :issue_comments, :issues, :name => "issue_comments_issue_id_fkey", :on_delete => :cascade - add_foreign_key :issue_comments, :users, :column => :user_id, :name => "issue_comments_user_id", :on_delete => :cascade + add_foreign_key :issue_comments, :issues, :name => "issue_comments_issue_id_fkey" + add_foreign_key :issue_comments, :users, :column => :user_id, :name => "issue_comments_user_id_fkey" add_index :issue_comments, :user_id add_index :issue_comments, :issue_id diff --git a/db/structure.sql b/db/structure.sql index e41b0834f..14e6592fc 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -2046,10 +2046,10 @@ CREATE INDEX index_issue_comments_on_user_id ON issue_comments USING btree (user -- --- Name: index_issues_on_reportable_id_and_reportable_type; Type: INDEX; Schema: public; Owner: - +-- Name: index_issues_on_reportable_type_and_reportable_id; Type: INDEX; Schema: public; Owner: - -- -CREATE INDEX index_issues_on_reportable_id_and_reportable_type ON issues USING btree (reportable_id, reportable_type); +CREATE INDEX index_issues_on_reportable_type_and_reportable_id ON issues USING btree (reportable_type, reportable_id); -- @@ -2532,15 +2532,15 @@ ALTER TABLE ONLY gpx_files -- ALTER TABLE ONLY issue_comments - ADD CONSTRAINT issue_comments_issue_id_fkey FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE; + ADD CONSTRAINT issue_comments_issue_id_fkey FOREIGN KEY (issue_id) REFERENCES issues(id); -- --- Name: issue_comments_user_id; Type: FK CONSTRAINT; Schema: public; Owner: - +-- Name: issue_comments_user_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - -- ALTER TABLE ONLY issue_comments - ADD CONSTRAINT issue_comments_user_id FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; + ADD CONSTRAINT issue_comments_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id); -- @@ -2548,7 +2548,15 @@ ALTER TABLE ONLY issue_comments -- ALTER TABLE ONLY issues - ADD CONSTRAINT issues_reported_user_id_fkey FOREIGN KEY (reported_user_id) REFERENCES users(id) ON DELETE CASCADE; + ADD CONSTRAINT issues_reported_user_id_fkey FOREIGN KEY (reported_user_id) REFERENCES users(id); + + +-- +-- Name: issues_resolved_by_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY issues + ADD CONSTRAINT issues_resolved_by_fkey FOREIGN KEY (resolved_by) REFERENCES users(id); -- @@ -2556,7 +2564,7 @@ ALTER TABLE ONLY issues -- ALTER TABLE ONLY issues - ADD CONSTRAINT issues_updated_by_fkey FOREIGN KEY (updated_by) REFERENCES users(id) ON DELETE CASCADE; + ADD CONSTRAINT issues_updated_by_fkey FOREIGN KEY (updated_by) REFERENCES users(id); -- @@ -2676,7 +2684,7 @@ ALTER TABLE ONLY relations -- ALTER TABLE ONLY reports - ADD CONSTRAINT reports_issue_id_fkey FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE; + ADD CONSTRAINT reports_issue_id_fkey FOREIGN KEY (issue_id) REFERENCES issues(id); -- @@ -2684,7 +2692,7 @@ ALTER TABLE ONLY reports -- ALTER TABLE ONLY reports - ADD CONSTRAINT reports_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE; + ADD CONSTRAINT reports_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id); --