Skip to content

Add presenters for GitLab objects for GLQL

Himanshu Kapoor requested to merge 477310-glql-gl-references into master

What is GLQL?

GitLab Query Language (GLQL) is an experimental attempt to create a single query language for all of GitLab which allows for filtering and embedding content from anywhere in the product.

See epic summary: &14767 for more details.

What does this MR do and why?

Add presenters for GitLab objects for GLQL

When displaying the result of a GLQL query, use GitLab reference specific field presenters to render them. Presenters included: collection, issuable, label, milestone, user.

Addresses issues #477310 and #477311

This is a multi-MR effort to split !161632 into smaller MRs.

  1. Push feature flag :glql_integration to frontend (!161942 - merged)
  2. Render GLQL blocks into a simple list of issues (!162050 - merged)
  3. Render GLQL blocks into a table of issues (!162081 - merged)
  4. Add field presenters for GLQL: bool, time, heal... (!162951 - merged)
  5. Add presenters for GitLab objects for GLQL (!163056) (👈 This MR)

MR acceptance checklist

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

Screenshots or screen recordings

For query:

```glql
---
display: table
fields: title, assignees, labels, milestone, epic
---
assignee = currentUser()
```
Before After
image image

How to set up and validate locally

  1. Enable feature flag :glql_integration.
  2. In a project, assign yourself some issues.
  3. Create a wiki page with the following content:
```glql
---
display: table
fields: title, assignees, labels, milestone, epic
---
assignee = currentUser()
```
  1. Save the page

Presentation layer

The optional YAML front matter block above the query contains presentation options.

Currently supported options:

  • display: How to display the data. Currently supported options: list or orderedList. Default: list.
  • limit: How many items to display. Current default: 100. Max limit is also 100.
  • fields: A comma separated value of fields. If not provided, only title field is included by default.

Currently supported fields: iid, author, state, title, createdAt, updatedAt, healthStatus, dueDate, confidential. Other fields may work here, but are not officially supported or tested with this MR.

Examples of GLQL queries:

  • weight = 1
  • assignee = currentUser()
  • label in ("devops::plan", "devops::create")
  • label != "backend" and author = currentUser() and weight = 1 and updated > today()
  • updated > today()

Supported areas

Rendering of GLQL blocks is supported behind a feature flag in the following areas:

  • Wikis (both group and project wikis)
  • Epics and epic comments
  • Issue and issue comments
  • Merge requests and merge request comments
  • Work items and work item comments
Edited by Himanshu Kapoor

Merge request reports