Filter WorkItem Types on GraphQL using WorkItems::TypesFilter

What does this MR do and why?

Introduce WorkItems::TypesFilter

This new model filters the list of work item types based on feature flags and licensed features.

Changelog: added

References

This work is strongly based on [GraphQL] Only return available WorkItems::Type... (!185081 - merged)

Related to: #524828

Example

query response
query getWorkItemTypes {
  groupTypes: namespace(fullPath: "group-public") {
    name
    all: workItemTypes(filterUnavailable: false) {
      nodes {
        name
      }
    }
    filtered: workItemTypes(filterUnavailable: true) {
      nodes {
        name
      }
    }
  }
  projectTypes: namespace(fullPath: "group-public/p1") {
    name
    all: workItemTypes(filterUnavailable: false) {
      nodes {
        name
      }
    }
    filtered: workItemTypes(filterUnavailable: true) {
      nodes {
        name
      }
    }
  }
}
{
  "data": {
    "groupTypes": {
      "name": "group-public",
      "all": {
        "nodes": [
          {
            "name": "Epic"
          },
          {
            "name": "Incident"
          },
          {
            "name": "Issue"
          },
          {
            "name": "Key Result"
          },
          {
            "name": "Objective"
          },
          {
            "name": "Requirement"
          },
          {
            "name": "Task"
          },
          {
            "name": "Test Case"
          },
          {
            "name": "Ticket"
          }
        ]
      },
      "filtered": {
        "nodes": [
          {
            "name": "Epic"
          }
        ]
      }
    },
    "projectTypes": {
      "name": "p1",
      "all": {
        "nodes": [
          {
            "name": "Epic"
          },
          {
            "name": "Incident"
          },
          {
            "name": "Issue"
          },
          {
            "name": "Key Result"
          },
          {
            "name": "Objective"
          },
          {
            "name": "Requirement"
          },
          {
            "name": "Task"
          },
          {
            "name": "Test Case"
          },
          {
            "name": "Ticket"
          }
        ]
      },
      "filtered": {
        "nodes": [
          {
            "name": "Epic"
          },
          {
            "name": "Incident"
          },
          {
            "name": "Issue"
          },
          {
            "name": "Task"
          }
        ]
      }
    }
  },
  "correlationId": "01K8XK29NPRCP8TFW30ND6P33J"
}

How to set up and validate locally

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Kassio Borges

Merge request reports

Loading