diff --git a/db/migrate/20220109032042_add_foreign_key_constraints.rb b/db/migrate/20220109032042_add_foreign_key_constraints.rb new file mode 100644 index 000000000..360a9bed9 --- /dev/null +++ b/db/migrate/20220109032042_add_foreign_key_constraints.rb @@ -0,0 +1,86 @@ +class AddForeignKeyConstraints < ActiveRecord::Migration[7.0] + def change + add_foreign_key :api_keys, :users, validate: false, deferrable: :deferred + add_foreign_key :artist_commentaries, :posts, validate: false, deferrable: :deferred + add_foreign_key :artist_commentary_versions, :posts, validate: false, deferrable: :deferred + add_foreign_key :artist_commentary_versions, :users, column: :updater_id, validate: false, deferrable: :deferred + add_foreign_key :artist_urls, :artists, validate: false, deferrable: :deferred + add_foreign_key :artist_versions, :artists, validate: false, deferrable: :deferred + add_foreign_key :artist_versions, :users, column: :updater_id, validate: false, deferrable: :deferred + add_foreign_key :bans, :users, validate: false, deferrable: :deferred + add_foreign_key :bans, :users, column: :banner_id, validate: false, deferrable: :deferred + add_foreign_key :bulk_update_requests, :forum_posts, validate: false, deferrable: :deferred + add_foreign_key :bulk_update_requests, :forum_topics, validate: false, deferrable: :deferred + add_foreign_key :bulk_update_requests, :users, validate: false, deferrable: :deferred + add_foreign_key :bulk_update_requests, :users, column: :approver_id, validate: false, deferrable: :deferred + add_foreign_key :comments, :posts, validate: false, deferrable: :deferred + add_foreign_key :comments, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :comments, :users, column: :updater_id, validate: false, deferrable: :deferred + add_foreign_key :comment_votes, :users, validate: false, deferrable: :deferred + add_foreign_key :comment_votes, :comments, validate: false, deferrable: :deferred + add_foreign_key :dmails, :users, column: :owner_id, validate: false, deferrable: :deferred + add_foreign_key :dmails, :users, column: :from_id, validate: false, deferrable: :deferred + add_foreign_key :dmails, :users, column: :to_id, validate: false, deferrable: :deferred + add_foreign_key :email_addresses, :users, validate: false, deferrable: :deferred + add_foreign_key :favorite_groups, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :favorites, :posts, validate: false, deferrable: :deferred + add_foreign_key :favorites, :users, validate: false, deferrable: :deferred + add_foreign_key :forum_post_votes, :forum_posts, validate: false, deferrable: :deferred + add_foreign_key :forum_post_votes, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :forum_posts, :forum_topics, column: :topic_id, validate: false, deferrable: :deferred + add_foreign_key :forum_posts, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :forum_posts, :users, column: :updater_id, validate: false, deferrable: :deferred + add_foreign_key :forum_topic_visits, :users, validate: false, deferrable: :deferred + add_foreign_key :forum_topic_visits, :forum_topics, validate: false, deferrable: :deferred + add_foreign_key :forum_topics, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :forum_topics, :users, column: :updater_id, validate: false, deferrable: :deferred + add_foreign_key :posts, :users, column: :uploader_id, validate: false, deferrable: :deferred + add_foreign_key :posts, :users, column: :approver_id, validate: false, deferrable: :deferred + add_foreign_key :posts, :posts, column: :parent_id, validate: false, deferrable: :deferred + add_foreign_key :ip_bans, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :media_metadata, :media_assets, validate: false, deferrable: :deferred + add_foreign_key :mod_actions, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :moderation_reports, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :news_updates, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :news_updates, :users, column: :updater_id, validate: false, deferrable: :deferred + add_foreign_key :notes, :posts, validate: false, deferrable: :deferred + add_foreign_key :note_versions, :posts, validate: false, deferrable: :deferred + add_foreign_key :note_versions, :notes, validate: false, deferrable: :deferred + add_foreign_key :note_versions, :users, column: :updater_id, validate: false, deferrable: :deferred + add_foreign_key :pixiv_ugoira_frame_data, :posts, validate: false, deferrable: :deferred + add_foreign_key :post_appeals, :posts, validate: false, deferrable: :deferred + add_foreign_key :post_appeals, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :post_approvals, :posts, validate: false, deferrable: :deferred + add_foreign_key :post_approvals, :users, validate: false, deferrable: :deferred + add_foreign_key :post_disapprovals, :posts, validate: false, deferrable: :deferred + add_foreign_key :post_disapprovals, :users, validate: false, deferrable: :deferred + add_foreign_key :post_flags, :posts, validate: false, deferrable: :deferred + add_foreign_key :post_flags, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :post_replacements, :posts, validate: false, deferrable: :deferred + add_foreign_key :post_replacements, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :post_votes, :posts, validate: false, deferrable: :deferred + add_foreign_key :post_votes, :users, validate: false, deferrable: :deferred + add_foreign_key :saved_searches, :users, validate: false, deferrable: :deferred + add_foreign_key :tag_aliases, :forum_posts, validate: false, deferrable: :deferred + add_foreign_key :tag_aliases, :forum_topics, validate: false, deferrable: :deferred + add_foreign_key :tag_aliases, :users, column: :approver_id, validate: false, deferrable: :deferred + add_foreign_key :tag_aliases, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :tag_implications, :forum_posts, validate: false, deferrable: :deferred + add_foreign_key :tag_implications, :forum_topics, validate: false, deferrable: :deferred + add_foreign_key :tag_implications, :users, column: :approver_id, validate: false, deferrable: :deferred + add_foreign_key :tag_implications, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :uploads, :posts, validate: false, deferrable: :deferred + add_foreign_key :uploads, :posts, column: :parent_id, validate: false, deferrable: :deferred + add_foreign_key :uploads, :users, column: :uploader_id, validate: false, deferrable: :deferred + add_foreign_key :users, :users, column: :inviter_id, validate: false, deferrable: :deferred + add_foreign_key :user_events, :users, validate: false, deferrable: :deferred + add_foreign_key :user_events, :user_sessions, validate: false, deferrable: :deferred + add_foreign_key :user_feedback, :users, validate: false, deferrable: :deferred + add_foreign_key :user_feedback, :users, column: :creator_id, validate: false, deferrable: :deferred + add_foreign_key :user_name_change_requests, :users, validate: false, deferrable: :deferred + add_foreign_key :user_upgrades, :users, column: :recipient_id, validate: false, deferrable: :deferred + add_foreign_key :user_upgrades, :users, column: :purchaser_id, validate: false, deferrable: :deferred + add_foreign_key :wiki_page_versions, :users, column: :updater_id, validate: false, deferrable: :deferred + add_foreign_key :wiki_page_versions, :wiki_pages, validate: false, deferrable: :deferred + end +end diff --git a/db/migrate/20220109163815_validate_foreign_key_constraints.rb b/db/migrate/20220109163815_validate_foreign_key_constraints.rb new file mode 100644 index 000000000..e78c4e04c --- /dev/null +++ b/db/migrate/20220109163815_validate_foreign_key_constraints.rb @@ -0,0 +1,86 @@ +class ValidateForeignKeyConstraints < ActiveRecord::Migration[7.0] + def change + validate_foreign_key :api_keys, :users + validate_foreign_key :artist_commentaries, :posts + validate_foreign_key :artist_commentary_versions, :posts + validate_foreign_key :artist_commentary_versions, :users, column: :updater_id + validate_foreign_key :artist_urls, :artists + validate_foreign_key :artist_versions, :artists + validate_foreign_key :artist_versions, :users, column: :updater_id + validate_foreign_key :bans, :users + validate_foreign_key :bans, :users, column: :banner_id + validate_foreign_key :bulk_update_requests, :forum_posts + validate_foreign_key :bulk_update_requests, :forum_topics + validate_foreign_key :bulk_update_requests, :users + validate_foreign_key :bulk_update_requests, :users, column: :approver_id + validate_foreign_key :comments, :posts + validate_foreign_key :comments, :users, column: :creator_id + validate_foreign_key :comments, :users, column: :updater_id + validate_foreign_key :comment_votes, :users + validate_foreign_key :comment_votes, :comments + validate_foreign_key :dmails, :users, column: :owner_id + validate_foreign_key :dmails, :users, column: :from_id + validate_foreign_key :dmails, :users, column: :to_id + validate_foreign_key :email_addresses, :users + validate_foreign_key :favorite_groups, :users, column: :creator_id + validate_foreign_key :favorites, :posts + validate_foreign_key :favorites, :users + validate_foreign_key :forum_post_votes, :forum_posts + validate_foreign_key :forum_post_votes, :users, column: :creator_id + validate_foreign_key :forum_posts, :forum_topics, column: :topic_id + validate_foreign_key :forum_posts, :users, column: :creator_id + validate_foreign_key :forum_posts, :users, column: :updater_id + validate_foreign_key :forum_topic_visits, :users + validate_foreign_key :forum_topic_visits, :forum_topics + validate_foreign_key :forum_topics, :users, column: :creator_id + validate_foreign_key :forum_topics, :users, column: :updater_id + validate_foreign_key :posts, :users, column: :uploader_id + validate_foreign_key :posts, :users, column: :approver_id + validate_foreign_key :posts, :posts, column: :parent_id + validate_foreign_key :ip_bans, :users, column: :creator_id + validate_foreign_key :media_metadata, :media_assets + validate_foreign_key :mod_actions, :users, column: :creator_id + validate_foreign_key :moderation_reports, :users, column: :creator_id + validate_foreign_key :news_updates, :users, column: :creator_id + validate_foreign_key :news_updates, :users, column: :updater_id + validate_foreign_key :notes, :posts + validate_foreign_key :note_versions, :posts + validate_foreign_key :note_versions, :notes + validate_foreign_key :note_versions, :users, column: :updater_id + validate_foreign_key :pixiv_ugoira_frame_data, :posts + validate_foreign_key :post_appeals, :posts + validate_foreign_key :post_appeals, :users, column: :creator_id + validate_foreign_key :post_approvals, :posts + validate_foreign_key :post_approvals, :users + validate_foreign_key :post_disapprovals, :posts + validate_foreign_key :post_disapprovals, :users + validate_foreign_key :post_flags, :posts + validate_foreign_key :post_flags, :users, column: :creator_id + validate_foreign_key :post_replacements, :posts + validate_foreign_key :post_replacements, :users, column: :creator_id + validate_foreign_key :post_votes, :posts + validate_foreign_key :post_votes, :users + validate_foreign_key :saved_searches, :users + validate_foreign_key :tag_aliases, :forum_posts + validate_foreign_key :tag_aliases, :forum_topics + validate_foreign_key :tag_aliases, :users, column: :approver_id + validate_foreign_key :tag_aliases, :users, column: :creator_id + validate_foreign_key :tag_implications, :forum_posts + validate_foreign_key :tag_implications, :forum_topics + validate_foreign_key :tag_implications, :users, column: :approver_id + validate_foreign_key :tag_implications, :users, column: :creator_id + validate_foreign_key :uploads, :posts + validate_foreign_key :uploads, :posts, column: :parent_id + validate_foreign_key :uploads, :users, column: :uploader_id + validate_foreign_key :users, :users, column: :inviter_id + validate_foreign_key :user_events, :users + validate_foreign_key :user_events, :user_sessions + validate_foreign_key :user_feedback, :users + validate_foreign_key :user_feedback, :users, column: :creator_id + validate_foreign_key :user_name_change_requests, :users + validate_foreign_key :user_upgrades, :users, column: :recipient_id + validate_foreign_key :user_upgrades, :users, column: :purchaser_id + validate_foreign_key :wiki_page_versions, :users, column: :updater_id + validate_foreign_key :wiki_page_versions, :wiki_pages + end +end diff --git a/db/structure.sql b/db/structure.sql index 3570e74b7..6785289b2 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -4744,6 +4744,662 @@ CREATE INDEX index_wiki_pages_on_updated_at ON public.wiki_pages USING btree (up CREATE UNIQUE INDEX unique_schema_migrations ON public.schema_migrations USING btree (version); +-- +-- Name: tag_aliases fk_rails_0157a2fd88; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.tag_aliases + ADD CONSTRAINT fk_rails_0157a2fd88 FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: bans fk_rails_070022cd76; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.bans + ADD CONSTRAINT fk_rails_070022cd76 FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: comment_votes fk_rails_0873e64a40; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.comment_votes + ADD CONSTRAINT fk_rails_0873e64a40 FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: uploads fk_rails_0e5f710d62; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.uploads + ADD CONSTRAINT fk_rails_0e5f710d62 FOREIGN KEY (parent_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: uploads fk_rails_127111e6ac; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.uploads + ADD CONSTRAINT fk_rails_127111e6ac FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED NOT VALID; + + +-- +-- Name: bulk_update_requests fk_rails_1773ada54d; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.bulk_update_requests + ADD CONSTRAINT fk_rails_1773ada54d FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: user_name_change_requests fk_rails_18d9682b1c; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.user_name_change_requests + ADD CONSTRAINT fk_rails_18d9682b1c FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: bans fk_rails_2234692cb1; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.bans + ADD CONSTRAINT fk_rails_2234692cb1 FOREIGN KEY (banner_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: bulk_update_requests fk_rails_22b3b2a525; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.bulk_update_requests + ADD CONSTRAINT fk_rails_22b3b2a525 FOREIGN KEY (forum_post_id) REFERENCES public.forum_posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: dmails fk_rails_22dbb958ad; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.dmails + ADD CONSTRAINT fk_rails_22dbb958ad FOREIGN KEY (from_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: post_appeals fk_rails_2794bb6745; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.post_appeals + ADD CONSTRAINT fk_rails_2794bb6745 FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: post_replacements fk_rails_286111af77; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.post_replacements + ADD CONSTRAINT fk_rails_286111af77 FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: mod_actions fk_rails_290059ebb5; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.mod_actions + ADD CONSTRAINT fk_rails_290059ebb5 FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: posts fk_rails_299f071108; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.posts + ADD CONSTRAINT fk_rails_299f071108 FOREIGN KEY (uploader_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: forum_topic_visits fk_rails_2c7f47773d; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.forum_topic_visits + ADD CONSTRAINT fk_rails_2c7f47773d FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: forum_posts fk_rails_2ddd2b5687; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.forum_posts + ADD CONSTRAINT fk_rails_2ddd2b5687 FOREIGN KEY (topic_id) REFERENCES public.forum_topics(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: wiki_page_versions fk_rails_2fc7c35d5a; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.wiki_page_versions + ADD CONSTRAINT fk_rails_2fc7c35d5a FOREIGN KEY (wiki_page_id) REFERENCES public.wiki_pages(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: comments fk_rails_2fd19c0db7; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.comments + ADD CONSTRAINT fk_rails_2fd19c0db7 FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: api_keys fk_rails_32c28d0dc2; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.api_keys + ADD CONSTRAINT fk_rails_32c28d0dc2 FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: artist_commentary_versions fk_rails_3b1402ddb3; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.artist_commentary_versions + ADD CONSTRAINT fk_rails_3b1402ddb3 FOREIGN KEY (updater_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: post_replacements fk_rails_3ddcb25767; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.post_replacements + ADD CONSTRAINT fk_rails_3ddcb25767 FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: users fk_rails_3e95061862; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.users + ADD CONSTRAINT fk_rails_3e95061862 FOREIGN KEY (inviter_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: posts fk_rails_3eb11ec3aa; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.posts + ADD CONSTRAINT fk_rails_3eb11ec3aa FOREIGN KEY (parent_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: post_disapprovals fk_rails_408a205f48; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.post_disapprovals + ADD CONSTRAINT fk_rails_408a205f48 FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: post_appeals fk_rails_4153b9e5a4; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.post_appeals + ADD CONSTRAINT fk_rails_4153b9e5a4 FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: user_events fk_rails_41fefee740; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.user_events + ADD CONSTRAINT fk_rails_41fefee740 FOREIGN KEY (user_session_id) REFERENCES public.user_sessions(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: forum_post_votes fk_rails_43fb736f24; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.forum_post_votes + ADD CONSTRAINT fk_rails_43fb736f24 FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: dmails fk_rails_46910c4d2c; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.dmails + ADD CONSTRAINT fk_rails_46910c4d2c FOREIGN KEY (to_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: post_flags fk_rails_4a92b4b725; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.post_flags + ADD CONSTRAINT fk_rails_4a92b4b725 FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: comments fk_rails_4b8a638a8b; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.comments + ADD CONSTRAINT fk_rails_4b8a638a8b FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: post_approvals fk_rails_4cda56c76c; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.post_approvals + ADD CONSTRAINT fk_rails_4cda56c76c FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: news_updates fk_rails_502e0a41d1; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.news_updates + ADD CONSTRAINT fk_rails_502e0a41d1 FOREIGN KEY (updater_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: forum_topics fk_rails_53d4e863cd; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.forum_topics + ADD CONSTRAINT fk_rails_53d4e863cd FOREIGN KEY (updater_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: user_upgrades fk_rails_55b7770fa9; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.user_upgrades + ADD CONSTRAINT fk_rails_55b7770fa9 FOREIGN KEY (recipient_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: tag_implications fk_rails_567423c3a3; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.tag_implications + ADD CONSTRAINT fk_rails_567423c3a3 FOREIGN KEY (approver_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: comments fk_rails_56c1cf09bc; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.comments + ADD CONSTRAINT fk_rails_56c1cf09bc FOREIGN KEY (updater_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: forum_posts fk_rails_5badbb08d8; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.forum_posts + ADD CONSTRAINT fk_rails_5badbb08d8 FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: forum_post_votes fk_rails_5c3f90ef3f; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.forum_post_votes + ADD CONSTRAINT fk_rails_5c3f90ef3f FOREIGN KEY (forum_post_id) REFERENCES public.forum_posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: artist_commentaries fk_rails_6110874871; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.artist_commentaries + ADD CONSTRAINT fk_rails_6110874871 FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: note_versions fk_rails_611f87a5ae; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.note_versions + ADD CONSTRAINT fk_rails_611f87a5ae FOREIGN KEY (note_id) REFERENCES public.notes(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: saved_searches fk_rails_63c5382842; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.saved_searches + ADD CONSTRAINT fk_rails_63c5382842 FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: post_flags fk_rails_68fe8072b5; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.post_flags + ADD CONSTRAINT fk_rails_68fe8072b5 FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: user_events fk_rails_717ccf5f73; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.user_events + ADD CONSTRAINT fk_rails_717ccf5f73 FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: note_versions fk_rails_71b80cd026; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.note_versions + ADD CONSTRAINT fk_rails_71b80cd026 FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: moderation_reports fk_rails_7221bfc52f; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.moderation_reports + ADD CONSTRAINT fk_rails_7221bfc52f FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: ip_bans fk_rails_73e3027d29; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.ip_bans + ADD CONSTRAINT fk_rails_73e3027d29 FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: post_approvals fk_rails_74f76ef71e; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.post_approvals + ADD CONSTRAINT fk_rails_74f76ef71e FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: favorite_groups fk_rails_796204a5e3; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.favorite_groups + ADD CONSTRAINT fk_rails_796204a5e3 FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: user_feedback fk_rails_81884ec765; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.user_feedback + ADD CONSTRAINT fk_rails_81884ec765 FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: bulk_update_requests fk_rails_87084cb039; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.bulk_update_requests + ADD CONSTRAINT fk_rails_87084cb039 FOREIGN KEY (approver_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: tag_aliases fk_rails_90fd158a45; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.tag_aliases + ADD CONSTRAINT fk_rails_90fd158a45 FOREIGN KEY (forum_topic_id) REFERENCES public.forum_topics(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: media_metadata fk_rails_93a4b916bd; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.media_metadata + ADD CONSTRAINT fk_rails_93a4b916bd FOREIGN KEY (media_asset_id) REFERENCES public.media_assets(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: comment_votes fk_rails_a0196e2ef9; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.comment_votes + ADD CONSTRAINT fk_rails_a0196e2ef9 FOREIGN KEY (comment_id) REFERENCES public.comments(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: forum_topics fk_rails_a0e236112e; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.forum_topics + ADD CONSTRAINT fk_rails_a0e236112e FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: notes fk_rails_a167a78679; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.notes + ADD CONSTRAINT fk_rails_a167a78679 FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: tag_implications fk_rails_aa452a83e5; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.tag_implications + ADD CONSTRAINT fk_rails_aa452a83e5 FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: bulk_update_requests fk_rails_ad41b77f74; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.bulk_update_requests + ADD CONSTRAINT fk_rails_ad41b77f74 FOREIGN KEY (forum_topic_id) REFERENCES public.forum_topics(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: artist_commentary_versions fk_rails_af197b3f45; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.artist_commentary_versions + ADD CONSTRAINT fk_rails_af197b3f45 FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: forum_topic_visits fk_rails_b19b04be70; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.forum_topic_visits + ADD CONSTRAINT fk_rails_b19b04be70 FOREIGN KEY (forum_topic_id) REFERENCES public.forum_topics(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: user_feedback fk_rails_b1c80e6f0a; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.user_feedback + ADD CONSTRAINT fk_rails_b1c80e6f0a FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: artist_versions fk_rails_b1cda9510c; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.artist_versions + ADD CONSTRAINT fk_rails_b1cda9510c FOREIGN KEY (artist_id) REFERENCES public.artists(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: post_votes fk_rails_b550730fb8; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.post_votes + ADD CONSTRAINT fk_rails_b550730fb8 FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: tag_implications fk_rails_bec6ee1cbe; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.tag_implications + ADD CONSTRAINT fk_rails_bec6ee1cbe FOREIGN KEY (forum_post_id) REFERENCES public.forum_posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: news_updates fk_rails_c008307ac5; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.news_updates + ADD CONSTRAINT fk_rails_c008307ac5 FOREIGN KEY (creator_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: dmails fk_rails_c303efc12e; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.dmails + ADD CONSTRAINT fk_rails_c303efc12e FOREIGN KEY (owner_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: wiki_page_versions fk_rails_c6ed6113f4; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.wiki_page_versions + ADD CONSTRAINT fk_rails_c6ed6113f4 FOREIGN KEY (updater_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: tag_aliases fk_rails_ca93879f64; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.tag_aliases + ADD CONSTRAINT fk_rails_ca93879f64 FOREIGN KEY (approver_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: favorites fk_rails_d15744e438; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.favorites + ADD CONSTRAINT fk_rails_d15744e438 FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: uploads fk_rails_d29b037216; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.uploads + ADD CONSTRAINT fk_rails_d29b037216 FOREIGN KEY (uploader_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: tag_implications fk_rails_dba2c19f93; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.tag_implications + ADD CONSTRAINT fk_rails_dba2c19f93 FOREIGN KEY (forum_topic_id) REFERENCES public.forum_topics(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: favorites fk_rails_dcaf44a136; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.favorites + ADD CONSTRAINT fk_rails_dcaf44a136 FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: email_addresses fk_rails_de643267e7; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.email_addresses + ADD CONSTRAINT fk_rails_de643267e7 FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: note_versions fk_rails_e4a6971555; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.note_versions + ADD CONSTRAINT fk_rails_e4a6971555 FOREIGN KEY (updater_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: artist_urls fk_rails_e4e6c00d41; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.artist_urls + ADD CONSTRAINT fk_rails_e4e6c00d41 FOREIGN KEY (artist_id) REFERENCES public.artists(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: tag_aliases fk_rails_e5a732a43b; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.tag_aliases + ADD CONSTRAINT fk_rails_e5a732a43b FOREIGN KEY (forum_post_id) REFERENCES public.forum_posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: post_disapprovals fk_rails_e6a71f8147; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.post_disapprovals + ADD CONSTRAINT fk_rails_e6a71f8147 FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: forum_posts fk_rails_eef947df00; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.forum_posts + ADD CONSTRAINT fk_rails_eef947df00 FOREIGN KEY (updater_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: posts fk_rails_f23dabc609; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.posts + ADD CONSTRAINT fk_rails_f23dabc609 FOREIGN KEY (approver_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: pixiv_ugoira_frame_data fk_rails_f249d093cc; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.pixiv_ugoira_frame_data + ADD CONSTRAINT fk_rails_f249d093cc FOREIGN KEY (post_id) REFERENCES public.posts(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: artist_versions fk_rails_f37d58ea23; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.artist_versions + ADD CONSTRAINT fk_rails_f37d58ea23 FOREIGN KEY (updater_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: post_votes fk_rails_f3edc07390; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.post_votes + ADD CONSTRAINT fk_rails_f3edc07390 FOREIGN KEY (user_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + +-- +-- Name: user_upgrades fk_rails_f9349ed07b; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.user_upgrades + ADD CONSTRAINT fk_rails_f9349ed07b FOREIGN KEY (purchaser_id) REFERENCES public.users(id) DEFERRABLE INITIALLY DEFERRED; + + -- -- PostgreSQL database dump complete -- @@ -5012,6 +5668,8 @@ INSERT INTO "schema_migrations" (version) VALUES ('20220104214319'), ('20220106171727'), ('20220106172910'), -('20220107014433'); +('20220107014433'), +('20220109032042'), +('20220109163815'); diff --git a/script/fixes/085_fix_invalid_favorites.rb b/script/fixes/085_fix_invalid_favorites.rb deleted file mode 100755 index 5f5a0e3b0..000000000 --- a/script/fixes/085_fix_invalid_favorites.rb +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env ruby - -require_relative "../../config/environment" - -Favorite.transaction do - Favorite.left_outer_joins(:post).where("posts.id": nil).destroy_all - - print "Commit? (yes/no): " - raise "abort" unless STDIN.readline.chomp == "yes" -end diff --git a/script/fixes/085_fix_invalid_foreign_keys.rb b/script/fixes/085_fix_invalid_foreign_keys.rb new file mode 100755 index 000000000..0ffa6135c --- /dev/null +++ b/script/fixes/085_fix_invalid_foreign_keys.rb @@ -0,0 +1,15 @@ +#!/usr/bin/env ruby + +require_relative "../../config/environment" + +ApplicationRecord.transaction do + Favorite.left_outer_joins(:post).where("posts.id": nil).destroy_all + ArtistVersion.left_outer_joins(:artist).where("artists.id": nil).destroy_all + Dmail.left_outer_joins(:owner).where("users.id": nil).destroy_all + ForumTopicVisit.left_outer_joins(:user).where("users.id": nil).destroy_all + NoteVersion.left_outer_joins(:post).where("posts.id": nil).destroy_all + Upload.where(parent_id: 0).update(parent_id: nil) + + print "Commit? (yes/no): " + raise "abort" unless STDIN.readline.chomp == "yes" +end