From 8a280cc82aac0bc2e1db8880afe78a6b2ee7b51e Mon Sep 17 00:00:00 2001
From: Missy Davies <ms.melissadavies@gmail.com>
Date: Mon, 19 Feb 2024 13:27:43 +0000
Subject: [PATCH] Remove the user_interacted_projects table

Changelog: removed
---
 .../user_interacted_projects.yml              |  2 ++
 ...e_foreign_keys_user_interacted_projects.rb | 30 +++++++++++++++++++
 ...947_drop_user_interacted_projects_table.rb | 27 +++++++++++++++++
 db/schema_migrations/20240212200632           |  1 +
 db/schema_migrations/20240212200947           |  1 +
 db/structure.sql                              | 16 ----------
 6 files changed, 61 insertions(+), 16 deletions(-)
 rename db/docs/{ => deleted_tables}/user_interacted_projects.yml (82%)
 create mode 100644 db/post_migrate/20240212200632_remove_foreign_keys_user_interacted_projects.rb
 create mode 100644 db/post_migrate/20240212200947_drop_user_interacted_projects_table.rb
 create mode 100644 db/schema_migrations/20240212200632
 create mode 100644 db/schema_migrations/20240212200947

diff --git a/db/docs/user_interacted_projects.yml b/db/docs/deleted_tables/user_interacted_projects.yml
similarity index 82%
rename from db/docs/user_interacted_projects.yml
rename to db/docs/deleted_tables/user_interacted_projects.yml
index c93a97bba8f09..7d58cec6e3c73 100644
--- a/db/docs/user_interacted_projects.yml
+++ b/db/docs/deleted_tables/user_interacted_projects.yml
@@ -16,3 +16,5 @@ allow_cross_foreign_keys:
 - gitlab_main_clusterwide
 sharding_key:
   project_id: projects
+removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139630
+removed_in_milestone: '16.10'
diff --git a/db/post_migrate/20240212200632_remove_foreign_keys_user_interacted_projects.rb b/db/post_migrate/20240212200632_remove_foreign_keys_user_interacted_projects.rb
new file mode 100644
index 0000000000000..64df9755116c6
--- /dev/null
+++ b/db/post_migrate/20240212200632_remove_foreign_keys_user_interacted_projects.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+class RemoveForeignKeysUserInteractedProjects < Gitlab::Database::Migration[2.2]
+  milestone '16.10'
+
+  disable_ddl_transaction!
+
+  FOREIGN_KEY_NAME_USERS = "fk_0894651f08"
+  FOREIGN_KEY_NAME_PROJECTS = "fk_722ceba4f7"
+
+  def up
+    with_lock_retries do
+      remove_foreign_key_if_exists(:user_interacted_projects, :users,
+        name: FOREIGN_KEY_NAME_USERS, reverse_lock_order: true)
+
+      remove_foreign_key_if_exists(:user_interacted_projects, :projects,
+        name: FOREIGN_KEY_NAME_PROJECTS, reverse_lock_order: true)
+    end
+  end
+
+  def down
+    add_concurrent_foreign_key(:user_interacted_projects, :users,
+      name: FOREIGN_KEY_NAME_USERS, column: :user_id,
+      target_column: :id, on_delete: :cascade)
+
+    add_concurrent_foreign_key(:user_interacted_projects, :projects,
+      name: FOREIGN_KEY_NAME_PROJECTS, column: :project_id,
+      target_column: :id, on_delete: :cascade)
+  end
+end
diff --git a/db/post_migrate/20240212200947_drop_user_interacted_projects_table.rb b/db/post_migrate/20240212200947_drop_user_interacted_projects_table.rb
new file mode 100644
index 0000000000000..b9751a28ade8e
--- /dev/null
+++ b/db/post_migrate/20240212200947_drop_user_interacted_projects_table.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+class DropUserInteractedProjectsTable < Gitlab::Database::Migration[2.2]
+  milestone '16.10'
+
+  disable_ddl_transaction!
+
+  TABLE_NAME = 'user_interacted_projects'
+  INDEX_NAME = 'index_user_interacted_projects_on_user_id'
+  PRIMARY_KEY_CONSTRAINT = 'user_interacted_projects_pkey'
+
+  def up
+    drop_table :user_interacted_projects
+  end
+
+  def down
+    unless table_exists?(:user_interacted_projects)
+      create_table :user_interacted_projects, id: false do |t|
+        t.integer :user_id, null: false
+        t.integer :project_id, null: false
+        t.index :user_id, name: INDEX_NAME
+      end
+    end
+
+    execute "ALTER TABLE #{TABLE_NAME} ADD CONSTRAINT #{PRIMARY_KEY_CONSTRAINT} PRIMARY KEY (project_id, user_id)"
+  end
+end
diff --git a/db/schema_migrations/20240212200632 b/db/schema_migrations/20240212200632
new file mode 100644
index 0000000000000..742a218090f81
--- /dev/null
+++ b/db/schema_migrations/20240212200632
@@ -0,0 +1 @@
+267bb24ca1cf7ff73624ae9b0c7c8b80ee9cdfb2cba77cd21a41304815fda432
\ No newline at end of file
diff --git a/db/schema_migrations/20240212200947 b/db/schema_migrations/20240212200947
new file mode 100644
index 0000000000000..70fa043b019ec
--- /dev/null
+++ b/db/schema_migrations/20240212200947
@@ -0,0 +1 @@
+bbff24ff2d7764f20435d68eb72c15bb885eb7a0474e46e4a57179c14c034b5c
\ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index 53acf8d1e8fcf..a1b9a466c854e 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -16621,11 +16621,6 @@ CREATE TABLE user_highest_roles (
     highest_access_level integer
 );
 
-CREATE TABLE user_interacted_projects (
-    user_id integer NOT NULL,
-    project_id integer NOT NULL
-);
-
 CREATE TABLE user_namespace_callouts (
     id bigint NOT NULL,
     user_id bigint NOT NULL,
@@ -22003,9 +21998,6 @@ ALTER TABLE ONLY user_group_callouts
 ALTER TABLE ONLY user_highest_roles
     ADD CONSTRAINT user_highest_roles_pkey PRIMARY KEY (user_id);
 
-ALTER TABLE ONLY user_interacted_projects
-    ADD CONSTRAINT user_interacted_projects_pkey PRIMARY KEY (project_id, user_id);
-
 ALTER TABLE ONLY user_namespace_callouts
     ADD CONSTRAINT user_namespace_callouts_pkey PRIMARY KEY (id);
 
@@ -26985,8 +26977,6 @@ CREATE INDEX index_user_group_callouts_on_group_id ON user_group_callouts USING
 
 CREATE INDEX index_user_highest_roles_on_user_id_and_highest_access_level ON user_highest_roles USING btree (user_id, highest_access_level);
 
-CREATE INDEX index_user_interacted_projects_on_user_id ON user_interacted_projects USING btree (user_id);
-
 CREATE INDEX index_user_namespace_callouts_on_namespace_id ON user_namespace_callouts USING btree (namespace_id);
 
 CREATE INDEX index_user_permission_export_uploads_on_user_id_and_status ON user_permission_export_uploads USING btree (user_id, status);
@@ -29231,9 +29221,6 @@ ALTER TABLE ONLY sbom_occurrences_vulnerabilities
 ALTER TABLE ONLY abuse_report_user_mentions
     ADD CONSTRAINT fk_088018ecd8 FOREIGN KEY (abuse_report_id) REFERENCES abuse_reports(id) ON DELETE CASCADE;
 
-ALTER TABLE ONLY user_interacted_projects
-    ADD CONSTRAINT fk_0894651f08 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;
-
 ALTER TABLE ONLY merge_request_assignment_events
     ADD CONSTRAINT fk_08f7602bfd FOREIGN KEY (merge_request_id) REFERENCES merge_requests(id) ON DELETE CASCADE;
 
@@ -29669,9 +29656,6 @@ ALTER TABLE ONLY protected_branch_push_access_levels
 ALTER TABLE ONLY integrations
     ADD CONSTRAINT fk_71cce407f9 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE;
 
-ALTER TABLE ONLY user_interacted_projects
-    ADD CONSTRAINT fk_722ceba4f7 FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE;
-
 ALTER TABLE ONLY subscription_user_add_on_assignments
     ADD CONSTRAINT fk_724c2df9a8 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;
 
-- 
GitLab