Remove cascading deletes, add another foreign key, and switch index around.

This commit is contained in:
Andy Allan 2018-03-14 16:15:39 +08:00
parent 3e5a4a14df
commit 5310c7000c
5 changed files with 36 additions and 25 deletions

View file

@ -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

View 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

View 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

View 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

View 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);
--