summaryrefslogtreecommitdiff
path: root/db/migrate/20221214201256_create_user_achievements.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/migrate/20221214201256_create_user_achievements.rb')
-rw-r--r--db/migrate/20221214201256_create_user_achievements.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/db/migrate/20221214201256_create_user_achievements.rb b/db/migrate/20221214201256_create_user_achievements.rb
new file mode 100644
index 00000000000..6e82cd255cd
--- /dev/null
+++ b/db/migrate/20221214201256_create_user_achievements.rb
@@ -0,0 +1,33 @@
+# frozen_string_literal: true
+
+class CreateUserAchievements < Gitlab::Database::Migration[2.1]
+ enable_lock_retries!
+
+ def up
+ create_table :user_achievements do |t|
+ t.references :achievement,
+ null: false,
+ index: false,
+ foreign_key: { on_delete: :cascade }
+ t.bigint :user_id,
+ null: false
+ t.bigint :awarded_by_user_id,
+ null: true
+ t.bigint :revoked_by_user_id,
+ index: true,
+ null: true
+ t.timestamps_with_timezone null: false
+ t.datetime_with_timezone :revoked_at, null: true
+ t.index 'achievement_id, (revoked_by_user_id IS NULL)',
+ name: 'index_user_achievements_on_achievement_id_revoked_by_is_null'
+ t.index 'user_id, (revoked_by_user_id IS NULL)',
+ name: 'index_user_achievements_on_user_id_revoked_by_is_null'
+ t.index 'awarded_by_user_id, (revoked_by_user_id IS NULL)',
+ name: 'index_user_achievements_on_awarded_by_revoked_by_is_null'
+ end
+ end
+
+ def down
+ drop_table :user_achievements
+ end
+end