Commit cd3d55f7 authored by Jan Provaznik's avatar Jan Provaznik

Merge branch 'cablett-backfilling-part-2-docs' into 'master'

Backfill GraphQL epic type descriptions (part 2)

See merge request gitlab-org/gitlab!21164
parents e635d90b 09d03b0a
...@@ -1128,7 +1128,14 @@ enum EntryType { ...@@ -1128,7 +1128,14 @@ enum EntryType {
} }
type Epic implements Noteable { type Epic implements Noteable {
"""
Author of the epic
"""
author: User! author: User!
"""
Children (sub-epics) of the epic
"""
children( children(
""" """
Returns the elements in the list that come after the specified cursor. Returns the elements in the list that come after the specified cursor.
...@@ -1197,13 +1204,25 @@ type Epic implements Noteable { ...@@ -1197,13 +1204,25 @@ type Epic implements Noteable {
""" """
state: EpicState state: EpicState
): EpicConnection ): EpicConnection
"""
Timestamp of the epic's closure
"""
closedAt: Time closedAt: Time
"""
Timestamp of the epic's creation
"""
createdAt: Time createdAt: Time
""" """
Number of open and closed descendant epics and issues Number of open and closed descendant epics and issues
""" """
descendantCounts: EpicDescendantCount descendantCounts: EpicDescendantCount
"""
Description of the epic
"""
description: String description: String
""" """
...@@ -1235,14 +1254,50 @@ type Epic implements Noteable { ...@@ -1235,14 +1254,50 @@ type Epic implements Noteable {
Number of downvotes the epic has received Number of downvotes the epic has received
""" """
downvotes: Int! downvotes: Int!
"""
Due date of the epic
"""
dueDate: Time dueDate: Time
"""
Fixed due date of the epic
"""
dueDateFixed: Time dueDateFixed: Time
"""
Inherited due date of the epic from milestones
"""
dueDateFromMilestones: Time dueDateFromMilestones: Time
"""
Indicates if the due date has been manually set
"""
dueDateIsFixed: Boolean dueDateIsFixed: Boolean
"""
Group to which the epic belongs
"""
group: Group! group: Group!
"""
Indicates if the epic has children
"""
hasChildren: Boolean! hasChildren: Boolean!
"""
Indicates if the epic has direct issues
"""
hasIssues: Boolean! hasIssues: Boolean!
"""
ID of the epic
"""
id: ID! id: ID!
"""
Internal ID of the epic
"""
iid: ID! iid: ID!
""" """
...@@ -1319,6 +1374,10 @@ type Epic implements Noteable { ...@@ -1319,6 +1374,10 @@ type Epic implements Noteable {
""" """
last: Int last: Int
): NoteConnection! ): NoteConnection!
"""
Parent epic of the epic
"""
parent: Epic parent: Epic
""" """
...@@ -1349,20 +1408,48 @@ type Epic implements Noteable { ...@@ -1349,20 +1408,48 @@ type Epic implements Noteable {
relationPath: String relationPath: String
""" """
The relative position of the epic in the Epic tree The relative position of the epic in the epic tree
""" """
relativePosition: Int relativePosition: Int
"""
Start date of the epic
"""
startDate: Time startDate: Time
"""
Fixed start date of the epic
"""
startDateFixed: Time startDateFixed: Time
"""
Inherited start date of the epic from milestones
"""
startDateFromMilestones: Time startDateFromMilestones: Time
"""
Indicates if the start date has been manually set
"""
startDateIsFixed: Boolean startDateIsFixed: Boolean
"""
State of the epic
"""
state: EpicState! state: EpicState!
""" """
Boolean flag for whether the currently logged in user is subscribed to this epic Boolean flag for whether the currently logged in user is subscribed to this epic
""" """
subscribed: Boolean! subscribed: Boolean!
"""
Title of the epic
"""
title: String title: String
"""
Timestamp of the epic's last activity
"""
updatedAt: Time updatedAt: Time
""" """
......
...@@ -3342,7 +3342,7 @@ ...@@ -3342,7 +3342,7 @@
"fields": [ "fields": [
{ {
"name": "author", "name": "author",
"description": null, "description": "Author of the epic",
"args": [ "args": [
], ],
...@@ -3360,7 +3360,7 @@ ...@@ -3360,7 +3360,7 @@
}, },
{ {
"name": "children", "name": "children",
"description": null, "description": "Children (sub-epics) of the epic",
"args": [ "args": [
{ {
"name": "iid", "name": "iid",
...@@ -3519,7 +3519,7 @@ ...@@ -3519,7 +3519,7 @@
}, },
{ {
"name": "closedAt", "name": "closedAt",
"description": null, "description": "Timestamp of the epic's closure",
"args": [ "args": [
], ],
...@@ -3533,7 +3533,7 @@ ...@@ -3533,7 +3533,7 @@
}, },
{ {
"name": "createdAt", "name": "createdAt",
"description": null, "description": "Timestamp of the epic's creation",
"args": [ "args": [
], ],
...@@ -3561,7 +3561,7 @@ ...@@ -3561,7 +3561,7 @@
}, },
{ {
"name": "description", "name": "description",
"description": null, "description": "Description of the epic",
"args": [ "args": [
], ],
...@@ -3650,7 +3650,7 @@ ...@@ -3650,7 +3650,7 @@
}, },
{ {
"name": "dueDate", "name": "dueDate",
"description": null, "description": "Due date of the epic",
"args": [ "args": [
], ],
...@@ -3664,7 +3664,7 @@ ...@@ -3664,7 +3664,7 @@
}, },
{ {
"name": "dueDateFixed", "name": "dueDateFixed",
"description": null, "description": "Fixed due date of the epic",
"args": [ "args": [
], ],
...@@ -3678,7 +3678,7 @@ ...@@ -3678,7 +3678,7 @@
}, },
{ {
"name": "dueDateFromMilestones", "name": "dueDateFromMilestones",
"description": null, "description": "Inherited due date of the epic from milestones",
"args": [ "args": [
], ],
...@@ -3692,7 +3692,7 @@ ...@@ -3692,7 +3692,7 @@
}, },
{ {
"name": "dueDateIsFixed", "name": "dueDateIsFixed",
"description": null, "description": "Indicates if the due date has been manually set",
"args": [ "args": [
], ],
...@@ -3706,7 +3706,7 @@ ...@@ -3706,7 +3706,7 @@
}, },
{ {
"name": "group", "name": "group",
"description": null, "description": "Group to which the epic belongs",
"args": [ "args": [
], ],
...@@ -3724,7 +3724,7 @@ ...@@ -3724,7 +3724,7 @@
}, },
{ {
"name": "hasChildren", "name": "hasChildren",
"description": null, "description": "Indicates if the epic has children",
"args": [ "args": [
], ],
...@@ -3742,7 +3742,7 @@ ...@@ -3742,7 +3742,7 @@
}, },
{ {
"name": "hasIssues", "name": "hasIssues",
"description": null, "description": "Indicates if the epic has direct issues",
"args": [ "args": [
], ],
...@@ -3760,7 +3760,7 @@ ...@@ -3760,7 +3760,7 @@
}, },
{ {
"name": "id", "name": "id",
"description": null, "description": "ID of the epic",
"args": [ "args": [
], ],
...@@ -3778,7 +3778,7 @@ ...@@ -3778,7 +3778,7 @@
}, },
{ {
"name": "iid", "name": "iid",
"description": null, "description": "Internal ID of the epic",
"args": [ "args": [
], ],
...@@ -3959,7 +3959,7 @@ ...@@ -3959,7 +3959,7 @@
}, },
{ {
"name": "parent", "name": "parent",
"description": null, "description": "Parent epic of the epic",
"args": [ "args": [
], ],
...@@ -4067,7 +4067,7 @@ ...@@ -4067,7 +4067,7 @@
}, },
{ {
"name": "relativePosition", "name": "relativePosition",
"description": "The relative position of the epic in the Epic tree", "description": "The relative position of the epic in the epic tree",
"args": [ "args": [
], ],
...@@ -4081,7 +4081,7 @@ ...@@ -4081,7 +4081,7 @@
}, },
{ {
"name": "startDate", "name": "startDate",
"description": null, "description": "Start date of the epic",
"args": [ "args": [
], ],
...@@ -4095,7 +4095,7 @@ ...@@ -4095,7 +4095,7 @@
}, },
{ {
"name": "startDateFixed", "name": "startDateFixed",
"description": null, "description": "Fixed start date of the epic",
"args": [ "args": [
], ],
...@@ -4109,7 +4109,7 @@ ...@@ -4109,7 +4109,7 @@
}, },
{ {
"name": "startDateFromMilestones", "name": "startDateFromMilestones",
"description": null, "description": "Inherited start date of the epic from milestones",
"args": [ "args": [
], ],
...@@ -4123,7 +4123,7 @@ ...@@ -4123,7 +4123,7 @@
}, },
{ {
"name": "startDateIsFixed", "name": "startDateIsFixed",
"description": null, "description": "Indicates if the start date has been manually set",
"args": [ "args": [
], ],
...@@ -4137,7 +4137,7 @@ ...@@ -4137,7 +4137,7 @@
}, },
{ {
"name": "state", "name": "state",
"description": null, "description": "State of the epic",
"args": [ "args": [
], ],
...@@ -4173,7 +4173,7 @@ ...@@ -4173,7 +4173,7 @@
}, },
{ {
"name": "title", "name": "title",
"description": null, "description": "Title of the epic",
"args": [ "args": [
], ],
...@@ -4187,7 +4187,7 @@ ...@@ -4187,7 +4187,7 @@
}, },
{ {
"name": "updatedAt", "name": "updatedAt",
"description": null, "description": "Timestamp of the epic's last activity",
"args": [ "args": [
], ],
......
...@@ -195,32 +195,32 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph ...@@ -195,32 +195,32 @@ The API can be explored interactively using the [GraphiQL IDE](../index.md#graph
| Name | Type | Description | | Name | Type | Description |
| --- | ---- | ---------- | | --- | ---- | ---------- |
| `userPermissions` | EpicPermissions! | Permissions for the current user on the resource | | `userPermissions` | EpicPermissions! | Permissions for the current user on the resource |
| `id` | ID! | | | `id` | ID! | ID of the epic |
| `iid` | ID! | | | `iid` | ID! | Internal ID of the epic |
| `title` | String | | | `title` | String | Title of the epic |
| `description` | String | | | `description` | String | Description of the epic |
| `state` | EpicState! | | | `state` | EpicState! | State of the epic |
| `group` | Group! | | | `group` | Group! | Group to which the epic belongs |
| `parent` | Epic | | | `parent` | Epic | Parent epic of the epic |
| `author` | User! | | | `author` | User! | Author of the epic |
| `startDate` | Time | | | `startDate` | Time | Start date of the epic |
| `startDateIsFixed` | Boolean | | | `startDateIsFixed` | Boolean | Indicates if the start date has been manually set |
| `startDateFixed` | Time | | | `startDateFixed` | Time | Fixed start date of the epic |
| `startDateFromMilestones` | Time | | | `startDateFromMilestones` | Time | Inherited start date of the epic from milestones |
| `dueDate` | Time | | | `dueDate` | Time | Due date of the epic |
| `dueDateIsFixed` | Boolean | | | `dueDateIsFixed` | Boolean | Indicates if the due date has been manually set |
| `dueDateFixed` | Time | | | `dueDateFixed` | Time | Fixed due date of the epic |
| `dueDateFromMilestones` | Time | | | `dueDateFromMilestones` | Time | Inherited due date of the epic from milestones |
| `upvotes` | Int! | Number of upvotes the epic has received | | `upvotes` | Int! | Number of upvotes the epic has received |
| `downvotes` | Int! | Number of downvotes the epic has received | | `downvotes` | Int! | Number of downvotes the epic has received |
| `closedAt` | Time | | | `closedAt` | Time | Timestamp of the epic's closure |
| `createdAt` | Time | | | `createdAt` | Time | Timestamp of the epic's creation |
| `updatedAt` | Time | | | `updatedAt` | Time | Timestamp of the epic's last activity |
| `hasChildren` | Boolean! | | | `hasChildren` | Boolean! | Indicates if the epic has children |
| `hasIssues` | Boolean! | | | `hasIssues` | Boolean! | Indicates if the epic has direct issues |
| `webPath` | String! | | | `webPath` | String! | |
| `webUrl` | String! | | | `webUrl` | String! | |
| `relativePosition` | Int | The relative position of the epic in the Epic tree | | `relativePosition` | Int | The relative position of the epic in the epic tree |
| `relationPath` | String | | | `relationPath` | String | |
| `reference` | String! | | | `reference` | String! | |
| `subscribed` | Boolean! | Boolean flag for whether the currently logged in user is subscribed to this epic | | `subscribed` | Boolean! | Boolean flag for whether the currently logged in user is subscribed to this epic |
......
...@@ -12,57 +12,87 @@ module Types ...@@ -12,57 +12,87 @@ module Types
implements(Types::Notes::NoteableType) implements(Types::Notes::NoteableType)
field :id, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions field :id, GraphQL::ID_TYPE, null: false,
field :iid, GraphQL::ID_TYPE, null: false # rubocop:disable Graphql/Descriptions description: 'ID of the epic'
field :title, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions field :iid, GraphQL::ID_TYPE, null: false,
field :description, GraphQL::STRING_TYPE, null: true # rubocop:disable Graphql/Descriptions description: 'Internal ID of the epic'
field :state, EpicStateEnum, null: false # rubocop:disable Graphql/Descriptions field :title, GraphQL::STRING_TYPE, null: true,
description: 'Title of the epic'
field :group, GroupType, # rubocop:disable Graphql/Descriptions field :description, GraphQL::STRING_TYPE, null: true,
null: false, description: 'Description of the epic'
field :state, EpicStateEnum, null: false,
description: 'State of the epic'
field :group, GroupType, null: false,
description: 'Group to which the epic belongs',
resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchModelLoader.new(Group, obj.group_id).find } resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchModelLoader.new(Group, obj.group_id).find }
field :parent, EpicType, # rubocop:disable Graphql/Descriptions field :parent, EpicType, null: true,
null: true, description: 'Parent epic of the epic',
resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchModelLoader.new(Epic, obj.parent_id).find } resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchModelLoader.new(Epic, obj.parent_id).find }
field :author, Types::UserType, # rubocop:disable Graphql/Descriptions field :author, Types::UserType, null: false,
null: false, description: 'Author of the epic',
resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchModelLoader.new(User, obj.author_id).find } resolve: -> (obj, _args, _ctx) { Gitlab::Graphql::Loaders::BatchModelLoader.new(User, obj.author_id).find }
field :start_date, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions field :start_date, Types::TimeType, null: true,
field :start_date_is_fixed, GraphQL::BOOLEAN_TYPE, null: true, method: :start_date_is_fixed?, authorize: :admin_epic # rubocop:disable Graphql/Descriptions description: 'Start date of the epic'
field :start_date_fixed, Types::TimeType, null: true, authorize: :admin_epic # rubocop:disable Graphql/Descriptions field :start_date_is_fixed, GraphQL::BOOLEAN_TYPE, null: true,
field :start_date_from_milestones, Types::TimeType, null: true, authorize: :admin_epic # rubocop:disable Graphql/Descriptions description: 'Indicates if the start date has been manually set',
method: :start_date_is_fixed?, authorize: :admin_epic
field :due_date, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions field :start_date_fixed, Types::TimeType, null: true,
field :due_date_is_fixed, GraphQL::BOOLEAN_TYPE, null: true, method: :due_date_is_fixed?, authorize: :admin_epic # rubocop:disable Graphql/Descriptions description: 'Fixed start date of the epic',
field :due_date_fixed, Types::TimeType, null: true, authorize: :admin_epic # rubocop:disable Graphql/Descriptions authorize: :admin_epic
field :due_date_from_milestones, Types::TimeType, null: true, authorize: :admin_epic # rubocop:disable Graphql/Descriptions field :start_date_from_milestones, Types::TimeType, null: true,
description: 'Inherited start date of the epic from milestones',
field :upvotes, GraphQL::INT_TYPE, null: false, description: 'Number of upvotes the epic has received' authorize: :admin_epic
field :downvotes, GraphQL::INT_TYPE, null: false, description: 'Number of downvotes the epic has received'
field :due_date, Types::TimeType, null: true,
field :closed_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions description: 'Due date of the epic'
field :created_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions field :due_date_is_fixed, GraphQL::BOOLEAN_TYPE, null: true,
field :updated_at, Types::TimeType, null: true # rubocop:disable Graphql/Descriptions description: 'Indicates if the due date has been manually set',
method: :due_date_is_fixed?, authorize: :admin_epic
field :children, # rubocop:disable Graphql/Descriptions field :due_date_fixed, Types::TimeType, null: true,
::Types::EpicType.connection_type, description: 'Fixed due date of the epic',
null: true, authorize: :admin_epic
field :due_date_from_milestones, Types::TimeType, null: true,
description: 'Inherited due date of the epic from milestones',
authorize: :admin_epic
field :upvotes, GraphQL::INT_TYPE, null: false,
description: 'Number of upvotes the epic has received'
field :downvotes, GraphQL::INT_TYPE, null: false,
description: 'Number of downvotes the epic has received'
field :closed_at, Types::TimeType, null: true,
description: "Timestamp of the epic's closure"
field :created_at, Types::TimeType, null: true,
description: "Timestamp of the epic's creation"
field :updated_at, Types::TimeType, null: true,
description: "Timestamp of the epic's last activity"
field :children, ::Types::EpicType.connection_type, null: true,
description: 'Children (sub-epics) of the epic',
resolver: ::Resolvers::EpicResolver resolver: ::Resolvers::EpicResolver
field :labels, Types::LabelType.connection_type, null: true, field :labels, Types::LabelType.connection_type, null: true,
description: 'Labels assigned to the epic' description: 'Labels assigned to the epic'
field :has_children, GraphQL::BOOLEAN_TYPE, null: false, method: :has_children? # rubocop:disable Graphql/Descriptions field :has_children, GraphQL::BOOLEAN_TYPE, null: false,
field :has_issues, GraphQL::BOOLEAN_TYPE, null: false, method: :has_issues? # rubocop:disable Graphql/Descriptions description: 'Indicates if the epic has children',
method: :has_children?
field :has_issues, GraphQL::BOOLEAN_TYPE, null: false,
description: 'Indicates if the epic has direct issues',
method: :has_issues?
field :web_path, GraphQL::STRING_TYPE, null: false, method: :group_epic_path # rubocop:disable Graphql/Descriptions field :web_path, GraphQL::STRING_TYPE, null: false, method: :group_epic_path # rubocop:disable Graphql/Descriptions
field :web_url, GraphQL::STRING_TYPE, null: false, method: :group_epic_url # rubocop:disable Graphql/Descriptions field :web_url, GraphQL::STRING_TYPE, null: false, method: :group_epic_url # rubocop:disable Graphql/Descriptions
field :relative_position, GraphQL::INT_TYPE, null: true, description: 'The relative position of the epic in the Epic tree' field :relative_position, GraphQL::INT_TYPE, null: true,
description: 'The relative position of the epic in the epic tree'
field :relation_path, GraphQL::STRING_TYPE, null: true, method: :group_epic_link_path # rubocop:disable Graphql/Descriptions field :relation_path, GraphQL::STRING_TYPE, null: true, method: :group_epic_link_path # rubocop:disable Graphql/Descriptions
field :reference, GraphQL::STRING_TYPE, null: false, method: :epic_reference do # rubocop:disable Graphql/Descriptions field :reference, GraphQL::STRING_TYPE, null: false, method: :epic_reference do # rubocop:disable Graphql/Descriptions
argument :full, GraphQL::BOOLEAN_TYPE, required: false, default_value: false # rubocop:disable Graphql/Descriptions argument :full, GraphQL::BOOLEAN_TYPE, required: false, default_value: false # rubocop:disable Graphql/Descriptions
end end
field :participants, Types::UserType.connection_type, null: true, complexity: 5, description: 'List of participants for the epic' field :participants, Types::UserType.connection_type, null: true,
description: 'List of participants for the epic',
complexity: 5
field :subscribed, GraphQL::BOOLEAN_TYPE, field :subscribed, GraphQL::BOOLEAN_TYPE,
method: :subscribed?, method: :subscribed?,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment