From b8462258d998704242dba202ade83b838874a38c Mon Sep 17 00:00:00 2001
From: Shane Maglangit <smaglangit@gitlab.com>
Date: Tue, 21 Jan 2025 14:23:14 +0800
Subject: [PATCH] Add NOT NULL constraint on
 terraform_state_versions.project_id

Changelog: other
---
 ...te_versions_project_id_not_null_constraint.rb | 14 ++++++++++++++
 ...te_versions_project_id_not_null_validation.rb | 16 ++++++++++++++++
 db/schema_migrations/20250121061641              |  1 +
 db/schema_migrations/20250121061656              |  1 +
 db/structure.sql                                 |  3 +++
 5 files changed, 35 insertions(+)
 create mode 100644 db/post_migrate/20250121061641_add_terraform_state_versions_project_id_not_null_constraint.rb
 create mode 100644 db/post_migrate/20250121061656_prepare_terraform_state_versions_project_id_not_null_validation.rb
 create mode 100644 db/schema_migrations/20250121061641
 create mode 100644 db/schema_migrations/20250121061656

diff --git a/db/post_migrate/20250121061641_add_terraform_state_versions_project_id_not_null_constraint.rb b/db/post_migrate/20250121061641_add_terraform_state_versions_project_id_not_null_constraint.rb
new file mode 100644
index 0000000000000..8da041cd6995f
--- /dev/null
+++ b/db/post_migrate/20250121061641_add_terraform_state_versions_project_id_not_null_constraint.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+class AddTerraformStateVersionsProjectIdNotNullConstraint < Gitlab::Database::Migration[2.2]
+  disable_ddl_transaction!
+  milestone '17.9'
+
+  def up
+    add_not_null_constraint :terraform_state_versions, :project_id, validate: false
+  end
+
+  def down
+    remove_not_null_constraint :terraform_state_versions, :project_id
+  end
+end
diff --git a/db/post_migrate/20250121061656_prepare_terraform_state_versions_project_id_not_null_validation.rb b/db/post_migrate/20250121061656_prepare_terraform_state_versions_project_id_not_null_validation.rb
new file mode 100644
index 0000000000000..e1b718ff67081
--- /dev/null
+++ b/db/post_migrate/20250121061656_prepare_terraform_state_versions_project_id_not_null_validation.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+class PrepareTerraformStateVersionsProjectIdNotNullValidation < Gitlab::Database::Migration[2.2]
+  disable_ddl_transaction!
+  milestone '17.9'
+
+  CONSTRAINT_NAME = :check_84142902f6
+
+  def up
+    prepare_async_check_constraint_validation :terraform_state_versions, name: CONSTRAINT_NAME
+  end
+
+  def down
+    unprepare_async_check_constraint_validation :terraform_state_versions, name: CONSTRAINT_NAME
+  end
+end
diff --git a/db/schema_migrations/20250121061641 b/db/schema_migrations/20250121061641
new file mode 100644
index 0000000000000..03ff6a2368888
--- /dev/null
+++ b/db/schema_migrations/20250121061641
@@ -0,0 +1 @@
+ff9d664955a375cdc264a048ee4f06e8c2d46d20e8dc0ea66234964d20f6cbd3
\ No newline at end of file
diff --git a/db/schema_migrations/20250121061656 b/db/schema_migrations/20250121061656
new file mode 100644
index 0000000000000..3c2f3f243c1d2
--- /dev/null
+++ b/db/schema_migrations/20250121061656
@@ -0,0 +1 @@
+c3ef8d6c6c1b697ce79fbe48c7ba109b032316c06a2013bdaee32132eaee7615
\ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index 0e335d7b44a91..8e5916dee5530 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -26272,6 +26272,9 @@ ALTER TABLE vulnerability_scanners
 ALTER TABLE p_ci_pipeline_variables
     ADD CONSTRAINT check_6e932dbabf CHECK ((project_id IS NOT NULL)) NOT VALID;
 
+ALTER TABLE terraform_state_versions
+    ADD CONSTRAINT check_84142902f6 CHECK ((project_id IS NOT NULL)) NOT VALID;
+
 ALTER TABLE sbom_occurrences_vulnerabilities
     ADD CONSTRAINT check_a02e48df9c CHECK ((project_id IS NOT NULL)) NOT VALID;
 
-- 
GitLab