Skip to content

Add widget definitions table

Jan Provaznik requested to merge jp-widget-def into master

What does this MR do and why?

Moves definition of widget mapping from hardcoded list into DB table.

Related to #374092 (closed)

DB migration

DB migration output
honza@pc ~/gitlab-development-kit/gitlab (jp-widget-def)$ rake db:migrate VERSION=20230129154819
WARNING: This version of GitLab depends on gitlab-shell 14.17.0, but you're running 14.15.0. Please update gitlab-shell.
main: == 20230129094140 AddWidgetDefinitions: migrating =============================
main: -- create_table(:work_item_widget_definitions)
main: -- quote_column_name(:name)
main:    -> 0.0000s
main:    -> 0.0389s
main: == 20230129094140 AddWidgetDefinitions: migrated (0.0399s) ====================

main: == 20230129154126 AddWidgetDefNamespaceFk: migrating ==========================
main: -- transaction_open?()
main:    -> 0.0000s
main: -- transaction_open?()
main:    -> 0.0000s
main: -- execute("ALTER TABLE work_item_widget_definitions\nADD CONSTRAINT fk_61bfa96db5\nFOREIGN KEY (work_item_type_id)\nREFERENCES work_item_types (id)\n\nON DELETE CASCADE\nNOT VALID;\n")
main:    -> 0.0009s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0003s
main: -- execute("ALTER TABLE work_item_widget_definitions VALIDATE CONSTRAINT fk_61bfa96db5;")
main:    -> 0.0016s
main: -- execute("RESET statement_timeout")
main:    -> 0.0003s
main: == 20230129154126 AddWidgetDefNamespaceFk: migrated (0.0605s) =================

main: == 20230129154202 AddWidgetDefWorkItemTypeFk: migrating =======================
main: -- transaction_open?()
main:    -> 0.0000s
main: -- transaction_open?()
main:    -> 0.0000s
main: -- execute("ALTER TABLE work_item_widget_definitions\nADD CONSTRAINT fk_ecf57512f7\nFOREIGN KEY (namespace_id)\nREFERENCES namespaces (id)\n\nON DELETE CASCADE\nNOT VALID;\n")
main:    -> 0.0011s
main: -- execute("ALTER TABLE work_item_widget_definitions VALIDATE CONSTRAINT fk_ecf57512f7;")
main:    -> 0.0021s
main: == 20230129154202 AddWidgetDefWorkItemTypeFk: migrated (0.0385s) ==============

main: == 20230129154819 AddWidgetsForWorkItemTypes: migrating =======================
main: == 20230129154819 AddWidgetsForWorkItemTypes: migrated (0.0246s) ==============

ci: == 20230129094140 AddWidgetDefinitions: migrating =============================
ci: -- create_table(:work_item_widget_definitions)
ci: -- quote_column_name(:name)
ci:    -> 0.0000s
ci:    -> 0.0250s
ci: == 20230129094140 AddWidgetDefinitions: migrated (0.0301s) ====================

ci: == 20230129154126 AddWidgetDefNamespaceFk: migrating ==========================
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- execute("ALTER TABLE work_item_widget_definitions\nADD CONSTRAINT fk_61bfa96db5\nFOREIGN KEY (work_item_type_id)\nREFERENCES work_item_types (id)\n\nON DELETE CASCADE\nNOT VALID;\n")
ci:    -> 0.0008s
ci: -- execute("SET statement_timeout TO 0")
ci:    -> 0.0003s
ci: -- execute("ALTER TABLE work_item_widget_definitions VALIDATE CONSTRAINT fk_61bfa96db5;")
ci:    -> 0.0015s
ci: -- execute("RESET statement_timeout")
ci:    -> 0.0003s
ci: == 20230129154126 AddWidgetDefNamespaceFk: migrated (0.0177s) =================

ci: == 20230129154202 AddWidgetDefWorkItemTypeFk: migrating =======================
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- execute("ALTER TABLE work_item_widget_definitions\nADD CONSTRAINT fk_ecf57512f7\nFOREIGN KEY (namespace_id)\nREFERENCES namespaces (id)\n\nON DELETE CASCADE\nNOT VALID;\n")
ci:    -> 0.0010s
ci: -- execute("ALTER TABLE work_item_widget_definitions VALIDATE CONSTRAINT fk_ecf57512f7;")
ci:    -> 0.0020s
ci: == 20230129154202 AddWidgetDefWorkItemTypeFk: migrated (0.0168s) ==============

ci: == 20230129154819 AddWidgetsForWorkItemTypes: migrating =======================
ci: -- The migration is skipped since it modifies the schemas: [:gitlab_main].
ci: -- This database can only apply migrations in one of the following schemas: [:gitlab_ci, :gitlab_shared, :gitlab_internal].
ci: == 20230129154819 AddWidgetsForWorkItemTypes: migrated (0.0051s) ==============

honza@pc ~/gitlab-development-kit/gitlab (jp-widget-def)$ rake db:rollback:main db:rollback:ci STEP=4
WARNING: This version of GitLab depends on gitlab-shell 14.17.0, but you're running 14.15.0. Please update gitlab-shell.
main: == 20230129154819 AddWidgetsForWorkItemTypes: reverting =======================
main: == 20230129154819 AddWidgetsForWorkItemTypes: reverted (0.0199s) ==============

main: == 20230129154202 AddWidgetDefWorkItemTypeFk: reverting =======================
main: -- transaction_open?()
main:    -> 0.0000s
main: -- remove_foreign_key(:work_item_widget_definitions, {:column=>:namespace_id})
main:    -> 0.0039s
main: == 20230129154202 AddWidgetDefWorkItemTypeFk: reverted (0.0166s) ==============

main: == 20230129154126 AddWidgetDefNamespaceFk: reverting ==========================
main: -- transaction_open?()
main:    -> 0.0000s
main: -- remove_foreign_key(:work_item_widget_definitions, {:column=>:work_item_type_id})
main:    -> 0.0029s
main: == 20230129154126 AddWidgetDefNamespaceFk: reverted (0.0057s) =================

main: == 20230129094140 AddWidgetDefinitions: reverting =============================
main: -- drop_table(:work_item_widget_definitions)
main:    -> 0.0013s
main: == 20230129094140 AddWidgetDefinitions: reverted (0.0017s) ====================

ci: == 20230129154819 AddWidgetsForWorkItemTypes: reverting =======================
ci: -- The migration is skipped since it modifies the schemas: [:gitlab_main].
ci: -- This database can only apply migrations in one of the following schemas: [:gitlab_ci, :gitlab_shared, :gitlab_internal].
ci: == 20230129154819 AddWidgetsForWorkItemTypes: reverted (0.0047s) ==============

ci: == 20230129154202 AddWidgetDefWorkItemTypeFk: reverting =======================
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- remove_foreign_key(:work_item_widget_definitions, {:column=>:namespace_id})
ci:    -> 0.0040s
ci: == 20230129154202 AddWidgetDefWorkItemTypeFk: reverted (0.0112s) ==============

ci: == 20230129154126 AddWidgetDefNamespaceFk: reverting ==========================
ci: -- transaction_open?()
ci:    -> 0.0000s
ci: -- remove_foreign_key(:work_item_widget_definitions, {:column=>:work_item_type_id})
ci:    -> 0.0029s
ci: == 20230129154126 AddWidgetDefNamespaceFk: reverted (0.0098s) =================

ci: == 20230129094140 AddWidgetDefinitions: reverting =============================
ci: -- drop_table(:work_item_widget_definitions)
ci:    -> 0.0012s
ci: == 20230129094140 AddWidgetDefinitions: reverted (0.0060s) ====================
Screenshots or screen recordings

Screenshots are required for UI changes, and strongly recommended for all other merge requests.

How to set up and validate locally

Numbered steps to set up and validate the change are strongly suggested.

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 Jan Provaznik

Merge request reports