Skip to content

Expose timelogs against issues and merge requests in graphql

Lee Tickett requested to merge graphql-expose-timelogs-against-issuables into master

What does this MR do?

Allows retrieval of timelogs against issue and merge request nodes using graphql.

Closes #16724 (closed)

Screenshots (strongly suggested)

Sample query (issues)

query {
  group(fullPath: "twitter") {
    id
    name
    issues { nodes { 
      title
      timelogs { nodes { 
        timeSpent
        note { body } 
      } }
    } }
  }
}

Response (issues)

{
    "data": {
        "group": {
            "id": "gid://gitlab/Group/27",
            "name": "Twitter",
            "issues": {
                "nodes": [
                    {
                        "title": "Et aut ullam et molestias pariatur sequi.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Ex praesentium ea reiciendis voluptas recusandae eaque tempora.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Et recusandae quam quidem saepe quo quis.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Consequatur sunt modi sit sit ea quidem aut non.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Consequuntur laborum culpa ipsam et quia quasi at qui ab.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Ipsum sint sunt nostrum omnis consequatur rerum id.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Est perferendis dicta expedita ipsum adipisci laudantium omnis consequatur consequatur et.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Dolorem enim delectus sunt eveniet non debitis.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "In nisi odio beatae eum et ratione.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Sint iure minus aut molestias modi dolores non repellat voluptatibus.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Quis autem voluptatibus adipisci itaque aut incidunt ea.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Minima est autem quia odio corrupti rerum eum.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Sit blanditiis ut cumque qui dolores temporibus eum est magni.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Et eius minima sunt expedita dolor quasi.",
                        "timelogs": {
                            "nodes": [
                                {
                                    "timeSpent": 600,
                                    "note": {
                                        "body": "Another note with some more time"
                                    }
                                }
                            ]
                        }
                    },
                    {
                        "title": "Quia nemo soluta aperiam quaerat dolores ut officiis voluptatem.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Dolorem ad voluptas qui quia et unde voluptatum qui.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Optio ut rerum placeat cum quae rem reiciendis provident molestiae.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Voluptates aliquam et modi quisquam odit labore qui voluptatum rem sapiente.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Qui molestias eligendi perferendis ut fugiat sunt est quasi ipsum et.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Modi vero repellat recusandae qui commodi error est voluptatum.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Quisquam aspernatur accusantium consectetur temporibus necessitatibus suscipit.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Quis ratione a repellat beatae officiis vero esse enim.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Rerum et quos corporis porro non fugit laborum quod.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Cumque id est aut fugit ipsa esse in.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Laboriosam dolorem optio quia cupiditate deserunt atque harum voluptatem impedit.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Eaque quia possimus voluptate qui dignissimos repellendus in libero pariatur.",
                        "timelogs": {
                            "nodes": []
                        }
                    }
                ]
            }
        }
    }
}

Sample query (merge requests)

query {
  group(fullPath: "twitter") {
    id
    name
    mergeRequests { nodes { 
      title
      timelogs { nodes { 
        timeSpent
        note { body } 
      } }
    } }
  }
}

Sample response (merge requests)

{
    "data": {
        "group": {
            "id": "gid://gitlab/Group/27",
            "name": "Twitter",
            "mergeRequests": {
                "nodes": [
                    {
                        "title": "Ipsam quo reiciendis fugit molestias quia dolorum.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Quibusdam a illo et nam eos quae sit error.",
                        "timelogs": {
                            "nodes": []
                        }
                    },
                    {
                        "title": "Esse amet perspiciatis voluptas et sed praesentium debitis repellat.",
                        "timelogs": {
                            "nodes": [
                                {
                                    "timeSpent": 300,
                                    "note": {
                                        "body": "A note with some time"
                                    }
                                }
                            ]
                        }
                    },
                    {
                        "title": "Natus nostrum et odio molestiae dolore possimus.",
                        "timelogs": {
                            "nodes": []
                        }
                    }
                ]
            }
        }
    }
}

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
Edited by Lee Tickett

Merge request reports