Skip to content

Remove specified labels on issue close

Mario Celi requested to merge 17461-remove-labels-on-issue-close into master

What does this MR do?

Relates to #17461

  • Adds boolean field for labels remove_on_issue_close.
  • REST and GraphQL API support creating and updating the new value on labels
  • Removes labels from issues when they are closed if remove_on_issue_close was true.

Follow up MR will take care of adding the new field to regular rails forms and controllers.

Migration output

Migrate

== 20210507191949 AddRemoveOnIssueCloseToLabels: migrating ====================
-- add_column(:labels, :remove_on_issue_close, :boolean, {:null=>false, :default=>false})
   -> 0.0018s
== 20210507191949 AddRemoveOnIssueCloseToLabels: migrated (0.0075s) ===========

Rollback

== 20210507191949 AddRemoveOnIssueCloseToLabels: reverting ====================
-- remove_column(:labels, :remove_on_issue_close, :boolean)
   -> 0.0013s
== 20210507191949 AddRemoveOnIssueCloseToLabels: reverted (0.0072s) ===========

Query Plans

issue.label_links.with_remove_on_issue_close_labels.delete_all

https://explain.depesz.com/s/yXDU

Cannot run the query on production as the remove_on_issue_close column does not exist yet.

RAW SQL

DELETE
FROM "label_links"
WHERE "label_links"."id" IN
    (SELECT "label_links"."id"
     FROM "label_links"
     INNER JOIN "labels" ON "labels"."id" = "label_links"."label_id"
     WHERE "label_links"."target_type" = 'Issue'
       AND "label_links"."target_id" = 86766093
       AND "labels"."remove_on_issue_close" = TRUE)

Screenshots (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • 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

Related to #17461

Edited by Mario Celi

Merge request reports