summaryrefslogtreecommitdiff
path: root/db/migrate/20210929032555_create_verification_codes.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/migrate/20210929032555_create_verification_codes.rb')
-rw-r--r--db/migrate/20210929032555_create_verification_codes.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/db/migrate/20210929032555_create_verification_codes.rb b/db/migrate/20210929032555_create_verification_codes.rb
new file mode 100644
index 00000000000..ad743641b9c
--- /dev/null
+++ b/db/migrate/20210929032555_create_verification_codes.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+class CreateVerificationCodes < Gitlab::Database::Migration[1.0]
+ include Gitlab::Database::PartitioningMigrationHelpers::TableManagementHelpers
+
+ def up
+ constraint_visitor_id_code = check_constraint_name('verification_codes', 'visitor_id_code', 'max_length')
+ constraint_code = check_constraint_name('verification_codes', 'code', 'max_length')
+ constraint_phone = check_constraint_name('verification_codes', 'phone', 'max_length')
+
+ execute(<<~SQL)
+ CREATE TABLE verification_codes (
+ created_at timestamp with time zone NOT NULL DEFAULT NOW(),
+ visitor_id_code text,
+ code text,
+ phone text,
+ PRIMARY KEY (created_at, visitor_id_code, code, phone),
+ CONSTRAINT #{constraint_visitor_id_code} CHECK ((char_length(visitor_id_code) <= 64)),
+ CONSTRAINT #{constraint_code} CHECK ((char_length(code) <= 8)),
+ CONSTRAINT #{constraint_phone} CHECK ((char_length(phone) <= 32))
+ ) PARTITION BY RANGE (created_at);
+ COMMENT ON TABLE verification_codes IS 'JiHu-specific table';
+
+ CREATE UNIQUE INDEX index_verification_codes_on_phone_and_visitor_id_code ON verification_codes (visitor_id_code, phone, created_at);
+ COMMENT ON INDEX index_verification_codes_on_phone_and_visitor_id_code IS 'JiHu-specific index';
+ SQL
+
+ min_date = Date.today - 1.month
+ max_date = Date.today + 1.month
+ create_daterange_partitions('verification_codes', 'created_at', min_date, max_date)
+ end
+
+ def down
+ drop_table :verification_codes
+ end
+end