Remove cascading deletes, add another foreign key, and switch index around.
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 14 Mar 2018 08:15:39 +0000 (16:15 +0800)
committerAndy Allan <git@gravitystorm.co.uk>
Wed, 14 Mar 2018 08:15:39 +0000 (16:15 +0800)
app/models/issue.rb
app/models/issue_comment.rb
app/models/report.rb
db/migrate/20160822153055_create_issues_and_reports.rb
db/structure.sql

index d13f297a9a443e007540f9e8f15b1f38317d1ebb..00ee934f7a0fe430d1b54720fb85837e948206ab 100644 (file)
 #
 # 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
index 2968078b3d96da719791cc220370be358aeccae3..3a5894cb3e1b4cab5ee1a91ed077164ed2faf77f 100644 (file)
@@ -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
index 816b8a42154ee5c1d8452b2584f620db4adf933d..63296a0948b9aae2a3ff7d1ac93423d9cf080e25 100644 (file)
@@ -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
index cd0dc7a9f9cfd0998399b9fe797ef8316bf03d1b..aa308ef6863b566615a079b7d9f871f405853386 100644 (file)
@@ -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
index e41b0834f0b501223e2ece77ca8af9fd4875a8b8..14e6592fcf6976383e654b0e6eabefc971f073d1 100644 (file)
@@ -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);
 
 
 --