Skip to content

Create table user_credit_card_validations

What does this MR do?

Related to issue: https://gitlab.com/gitlab-org/gitlab/-/issues/329141

This MR: create a new table user_credit_card_validations, and add/update model files(User, UserCreditCardValidation) accordingly.

Why create a new table?

We need to save a new timestamp information (credit_card_validated_at) for user. This information will be used to reduce the abuse of CI pipeline usage. We choose to create a new table user_credit_card_validations, instead of adding a new column credit_card_validated_at directly to users table. Because:

  • We have >8M users today in production DB. Only small number of users will need to verify their credit card, which means for most users, their credit_card_validated_at will be null.
  • We try to avoid adding new columns to users, because it already has too many columns.

Migration output

$ bin/rails db:migrate
== 20210429131525 CreateUserCreditCardValidations: migrating ==================
-- create_table(:user_credit_card_validations, {:id=>false})
   -> 0.0201s
== 20210429131525 CreateUserCreditCardValidations: migrated (0.0253s) =========


$ bin/rails db:rollback
== 20210429131525 CreateUserCreditCardValidations: reverting ==================
-- drop_table(:user_credit_card_validations)
   -> 0.0026s
== 20210429131525 CreateUserCreditCardValidations: reverted (0.0101s) =========

Screenshots (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team
Edited by Qingyu Zhao

Merge request reports