Add destroyIteration mutation

Merged Mario Celi requested to merge 292268-destroy-iteration-mutation into master

What does this MR do?

Adds destroyIteration mutation to GQL

Relates to #292268 (closed)

Lack of Foreign key on iteration_id explanation

This is something every reviewer has asked, so it makes sense to clarify here. The iteration_id column does not have a foreign key as would be expected, and the reason for this is that the current implementation of boards allows values like -4 in the column to refer to the "current iteration". That's why we have to manually update all boards that held the ID of the destroyed iteration.

Database plans

Query 1

RAW SQL

UPDATE "boards" SET "iteration_id" = NULL WHERE "boards"."iteration_id" = 17394

Query Plans

https://console.postgres.ai/shared/38a02859-f546-4460-b5c9-918b1f963752

Query 2

RAW SQL

SELECT 1 AS one
FROM "sprints"
WHERE "sprints"."iterations_cadence_id" = 913
  AND (start_date > '2021-05-01 00:00:00')
LIMIT 1;

Query Plans

https://console.postgres.ai/shared/37598333-ddd9-4f6d-b594-baca0b901f2d

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

Related to #292268 (closed)

Edited by Mario Celi