Skip to content

Add NamespaceBan model

Alex Buijs requested to merge add-namespace-bans into master

What does this MR do and why?

This adds a NamespaceBan model to be used for banning users at the namespace level, see the epic.

Issue: https://gitlab.com/gitlab-org/modelops/anti-abuse/team-tasks/-/issues/41

Migrate up output
main: == 20220628120708 CreateNamespaceBans: migrating ==============================
main: -- create_table(:namespace_bans, {})
main:    -> 0.0129s
main: == 20220628120708 CreateNamespaceBans: migrated (0.0149s) =====================

main: == 20220628121644 AddNamespaceBansNamespaceIdForeignKey: migrating ============
main: -- transaction_open?()
main:    -> 0.0000s
main: -- foreign_keys(:namespace_bans)
main:    -> 0.0073s
main: -- transaction_open?()
main:    -> 0.0000s
main: -- execute("ALTER TABLE namespace_bans\nADD CONSTRAINT fk_bcc024eef2\nFOREIGN KEY (namespace_id)\nREFERENCES namespaces (id)\nON DELETE CASCADE\nNOT VALID;\n")
main:    -> 0.0022s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0004s
main: -- execute("ALTER TABLE namespace_bans VALIDATE CONSTRAINT fk_bcc024eef2;")
main:    -> 0.0043s
main: -- execute("RESET statement_timeout")
main:    -> 0.0006s
main: == 20220628121644 AddNamespaceBansNamespaceIdForeignKey: migrated (0.0266s) ===

main: == 20220628121712 AddNamespaceBansUserIdForeignKey: migrating =================
main: -- transaction_open?()
main:    -> 0.0000s
main: -- foreign_keys(:namespace_bans)
main:    -> 0.0045s
main: -- transaction_open?()
main:    -> 0.0000s
main: -- execute("ALTER TABLE namespace_bans\nADD CONSTRAINT fk_4275fbb1d7\nFOREIGN KEY (user_id)\nREFERENCES users (id)\nON DELETE CASCADE\nNOT VALID;\n")
main:    -> 0.0019s
main: -- execute("ALTER TABLE namespace_bans VALIDATE CONSTRAINT fk_4275fbb1d7;")
main:    -> 0.0042s
main: == 20220628121712 AddNamespaceBansUserIdForeignKey: migrated (0.0154s) ========

ci: == 20220628120708 CreateNamespaceBans: migrating ==============================
ci: -- create_table(:namespace_bans, {})
ci:    -> 0.0116s
ci: == 20220628120708 CreateNamespaceBans: migrated (0.0118s) =====================

ci: == 20220628121644 AddNamespaceBansNamespaceIdForeignKey: migrating ============
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- foreign_keys(:namespace_bans)
ci:    -> 0.0056s
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- execute("ALTER TABLE namespace_bans\nADD CONSTRAINT fk_bcc024eef2\nFOREIGN KEY (namespace_id)\nREFERENCES namespaces (id)\nON DELETE CASCADE\nNOT VALID;\n")
ci:    -> 0.0032s
ci: -- execute("SET statement_timeout TO 0")
ci:    -> 0.0004s
ci: -- execute("ALTER TABLE namespace_bans VALIDATE CONSTRAINT fk_bcc024eef2;")
ci:    -> 0.0056s
ci: -- execute("RESET statement_timeout")
ci:    -> 0.0005s
ci: == 20220628121644 AddNamespaceBansNamespaceIdForeignKey: migrated (0.0201s) ===

ci: == 20220628121712 AddNamespaceBansUserIdForeignKey: migrating =================
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- foreign_keys(:namespace_bans)
ci:    -> 0.0044s
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- execute("ALTER TABLE namespace_bans\nADD CONSTRAINT fk_4275fbb1d7\nFOREIGN KEY (user_id)\nREFERENCES users (id)\nON DELETE CASCADE\nNOT VALID;\n")
ci:    -> 0.0017s
ci: -- execute("ALTER TABLE namespace_bans VALIDATE CONSTRAINT fk_4275fbb1d7;")
ci:    -> 0.0047s
ci: == 20220628121712 AddNamespaceBansUserIdForeignKey: migrated (0.0144s) ========
Migrate down output
main: == 20220628121712 AddNamespaceBansUserIdForeignKey: reverting =================
main: -- transaction_open?()
main:    -> 0.0000s
main: -- remove_foreign_key(:namespace_bans, {:column=>:user_id})
main:    -> 0.0086s
main: == 20220628121712 AddNamespaceBansUserIdForeignKey: reverted (0.0218s) ========

main: == 20220628121644 AddNamespaceBansNamespaceIdForeignKey: reverting ============
main: -- transaction_open?()
main:    -> 0.0000s
main: -- remove_foreign_key(:namespace_bans, {:column=>:namespace_id})
main:    -> 0.0043s
main: == 20220628121644 AddNamespaceBansNamespaceIdForeignKey: reverted (0.0067s) ===

main: == 20220628120708 CreateNamespaceBans: reverting ==============================
main: -- drop_table(:namespace_bans, {})
main:    -> 0.0022s
main: == 20220628120708 CreateNamespaceBans: reverted (0.0043s) =====================

ci: == 20220628121712 AddNamespaceBansUserIdForeignKey: reverting =================
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- remove_foreign_key(:namespace_bans, {:column=>:user_id})
ci:    -> 0.0072s
ci: == 20220628121712 AddNamespaceBansUserIdForeignKey: reverted (0.0111s) ========

ci: == 20220628121644 AddNamespaceBansNamespaceIdForeignKey: reverting ============
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- remove_foreign_key(:namespace_bans, {:column=>:namespace_id})
ci:    -> 0.0050s
ci: == 20220628121644 AddNamespaceBansNamespaceIdForeignKey: reverted (0.0078s) ===

ci: == 20220628120708 CreateNamespaceBans: reverting ==============================
ci: -- drop_table(:namespace_bans, {})
ci:    -> 0.0028s
ci: == 20220628120708 CreateNamespaceBans: reverted (0.0030s) =====================

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Alex Buijs

Merge request reports