Commit e1670b92 authored by Phil Hughes's avatar Phil Hughes

Added webPath fields to repository entries

Also added description HTML field to the commit type
parent b3d6ac29
...@@ -17,12 +17,15 @@ module Types ...@@ -17,12 +17,15 @@ module Types
markdown_field :title_html, null: true markdown_field :title_html, null: true
field :description, type: GraphQL::STRING_TYPE, null: true, field :description, type: GraphQL::STRING_TYPE, null: true,
description: 'Description of the commit message' description: 'Description of the commit message'
markdown_field :description_html, null: true
field :message, type: GraphQL::STRING_TYPE, null: true, field :message, type: GraphQL::STRING_TYPE, null: true,
description: 'Raw commit message' description: 'Raw commit message'
field :authored_date, type: Types::TimeType, null: true, field :authored_date, type: Types::TimeType, null: true,
description: 'Timestamp of when the commit was authored' description: 'Timestamp of when the commit was authored'
field :web_url, type: GraphQL::STRING_TYPE, null: false, field :web_url, type: GraphQL::STRING_TYPE, null: false,
description: 'Web URL of the commit' description: 'Web URL of the commit'
field :web_path, type: GraphQL::STRING_TYPE, null: false,
description: 'Web path of the commit'
field :signature_html, type: GraphQL::STRING_TYPE, null: true, calls_gitaly: true, field :signature_html, type: GraphQL::STRING_TYPE, null: true, calls_gitaly: true,
description: 'Rendered HTML of the commit signature' description: 'Rendered HTML of the commit signature'
field :author_name, type: GraphQL::STRING_TYPE, null: true, field :author_name, type: GraphQL::STRING_TYPE, null: true,
......
...@@ -12,6 +12,8 @@ module Types ...@@ -12,6 +12,8 @@ module Types
field :web_url, GraphQL::STRING_TYPE, null: true, field :web_url, GraphQL::STRING_TYPE, null: true,
description: 'Web URL of the blob' description: 'Web URL of the blob'
field :web_path, GraphQL::STRING_TYPE, null: true,
description: 'Web path of the blob'
field :lfs_oid, GraphQL::STRING_TYPE, null: true, field :lfs_oid, GraphQL::STRING_TYPE, null: true,
description: 'LFS ID of the blob', description: 'LFS ID of the blob',
resolve: -> (blob, args, ctx) do resolve: -> (blob, args, ctx) do
......
...@@ -13,6 +13,8 @@ module Types ...@@ -13,6 +13,8 @@ module Types
field :web_url, GraphQL::STRING_TYPE, null: true, field :web_url, GraphQL::STRING_TYPE, null: true,
description: 'Web URL for the tree entry (directory)' description: 'Web URL for the tree entry (directory)'
field :web_path, GraphQL::STRING_TYPE, null: true,
description: 'Web path for the tree entry (directory)'
end end
# rubocop: enable Graphql/AuthorizeTypes # rubocop: enable Graphql/AuthorizeTypes
end end
......
...@@ -22,6 +22,8 @@ module Types ...@@ -22,6 +22,8 @@ module Types
description: "URL of the user's avatar" description: "URL of the user's avatar"
field :web_url, GraphQL::STRING_TYPE, null: false, field :web_url, GraphQL::STRING_TYPE, null: false,
description: 'Web URL of the user' description: 'Web URL of the user'
field :web_path, GraphQL::STRING_TYPE, null: false,
description: 'Web path of the user'
field :todos, Types::TodoType.connection_type, null: false, field :todos, Types::TodoType.connection_type, null: false,
resolver: Resolvers::TodoResolver, resolver: Resolvers::TodoResolver,
description: 'Todos of the user' description: 'Todos of the user'
......
...@@ -18,6 +18,10 @@ class BlobPresenter < Gitlab::View::Presenter::Delegated ...@@ -18,6 +18,10 @@ class BlobPresenter < Gitlab::View::Presenter::Delegated
Gitlab::Routing.url_helpers.project_blob_url(blob.repository.project, File.join(blob.commit_id, blob.path)) Gitlab::Routing.url_helpers.project_blob_url(blob.repository.project, File.join(blob.commit_id, blob.path))
end end
def web_path
Gitlab::Routing.url_helpers.project_blob_path(blob.repository.project, File.join(blob.commit_id, blob.path))
end
private private
def load_all_blob_data def load_all_blob_data
......
...@@ -21,6 +21,10 @@ class CommitPresenter < Gitlab::View::Presenter::Delegated ...@@ -21,6 +21,10 @@ class CommitPresenter < Gitlab::View::Presenter::Delegated
url_builder.build(commit) url_builder.build(commit)
end end
def web_path
url_builder.build(commit, only_path: true)
end
def signature_html def signature_html
return unless commit.has_signature? return unless commit.has_signature?
......
...@@ -6,4 +6,8 @@ class TreeEntryPresenter < Gitlab::View::Presenter::Delegated ...@@ -6,4 +6,8 @@ class TreeEntryPresenter < Gitlab::View::Presenter::Delegated
def web_url def web_url
Gitlab::Routing.url_helpers.project_tree_url(tree.repository.project, File.join(tree.commit_id, tree.path)) Gitlab::Routing.url_helpers.project_tree_url(tree.repository.project, File.join(tree.commit_id, tree.path))
end end
def web_path
Gitlab::Routing.url_helpers.project_tree_path(tree.repository.project, File.join(tree.commit_id, tree.path))
end
end end
...@@ -6,4 +6,8 @@ class UserPresenter < Gitlab::View::Presenter::Delegated ...@@ -6,4 +6,8 @@ class UserPresenter < Gitlab::View::Presenter::Delegated
def web_url def web_url
Gitlab::Routing.url_helpers.user_url(user) Gitlab::Routing.url_helpers.user_url(user)
end end
def web_path
Gitlab::Routing.url_helpers.user_path(user)
end
end end
...@@ -873,6 +873,11 @@ type Blob implements Entry { ...@@ -873,6 +873,11 @@ type Blob implements Entry {
""" """
type: EntryType! type: EntryType!
"""
Web path of the blob
"""
webPath: String
""" """
Web URL of the blob Web URL of the blob
""" """
...@@ -1186,6 +1191,11 @@ type Commit { ...@@ -1186,6 +1191,11 @@ type Commit {
""" """
description: String description: String
"""
The GitLab Flavored Markdown rendering of `description`
"""
descriptionHtml: String
""" """
ID (global ID) of the commit ID (global ID) of the commit
""" """
...@@ -1276,6 +1286,11 @@ type Commit { ...@@ -1276,6 +1286,11 @@ type Commit {
""" """
titleHtml: String titleHtml: String
"""
Web path of the commit
"""
webPath: String!
""" """
Web URL of the commit Web URL of the commit
""" """
...@@ -13664,6 +13679,11 @@ type TreeEntry implements Entry { ...@@ -13664,6 +13679,11 @@ type TreeEntry implements Entry {
""" """
type: EntryType! type: EntryType!
"""
Web path for the tree entry (directory)
"""
webPath: String
""" """
Web URL for the tree entry (directory) Web URL for the tree entry (directory)
""" """
...@@ -14570,6 +14590,11 @@ type User { ...@@ -14570,6 +14590,11 @@ type User {
""" """
username: String! username: String!
"""
Web path of the user
"""
webPath: String!
""" """
Web URL of the user Web URL of the user
""" """
......
...@@ -2300,6 +2300,20 @@ ...@@ -2300,6 +2300,20 @@
"isDeprecated": false, "isDeprecated": false,
"deprecationReason": null "deprecationReason": null
}, },
{
"name": "webPath",
"description": "Web path of the blob",
"args": [
],
"type": {
"kind": "SCALAR",
"name": "String",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{ {
"name": "webUrl", "name": "webUrl",
"description": "Web URL of the blob", "description": "Web URL of the blob",
...@@ -3244,6 +3258,20 @@ ...@@ -3244,6 +3258,20 @@
"isDeprecated": false, "isDeprecated": false,
"deprecationReason": null "deprecationReason": null
}, },
{
"name": "descriptionHtml",
"description": "The GitLab Flavored Markdown rendering of `description`",
"args": [
],
"type": {
"kind": "SCALAR",
"name": "String",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{ {
"name": "id", "name": "id",
"description": "ID (global ID) of the commit", "description": "ID (global ID) of the commit",
...@@ -3462,6 +3490,24 @@ ...@@ -3462,6 +3490,24 @@
"isDeprecated": false, "isDeprecated": false,
"deprecationReason": null "deprecationReason": null
}, },
{
"name": "webPath",
"description": "Web path of the commit",
"args": [
],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "String",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
},
{ {
"name": "webUrl", "name": "webUrl",
"description": "Web URL of the commit", "description": "Web URL of the commit",
...@@ -40433,6 +40479,20 @@ ...@@ -40433,6 +40479,20 @@
"isDeprecated": false, "isDeprecated": false,
"deprecationReason": null "deprecationReason": null
}, },
{
"name": "webPath",
"description": "Web path for the tree entry (directory)",
"args": [
],
"type": {
"kind": "SCALAR",
"name": "String",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{ {
"name": "webUrl", "name": "webUrl",
"description": "Web URL for the tree entry (directory)", "description": "Web URL for the tree entry (directory)",
...@@ -42864,6 +42924,24 @@ ...@@ -42864,6 +42924,24 @@
"isDeprecated": false, "isDeprecated": false,
"deprecationReason": null "deprecationReason": null
}, },
{
"name": "webPath",
"description": "Web path of the user",
"args": [
],
"type": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "String",
"ofType": null
}
},
"isDeprecated": false,
"deprecationReason": null
},
{ {
"name": "webUrl", "name": "webUrl",
"description": "Web URL of the user", "description": "Web URL of the user",
...@@ -178,6 +178,7 @@ Autogenerated return type of AwardEmojiToggle ...@@ -178,6 +178,7 @@ Autogenerated return type of AwardEmojiToggle
| `path` | String! | Path of the entry | | `path` | String! | Path of the entry |
| `sha` | String! | Last commit sha for the entry | | `sha` | String! | Last commit sha for the entry |
| `type` | EntryType! | Type of tree entry | | `type` | EntryType! | Type of tree entry |
| `webPath` | String | Web path of the blob |
| `webUrl` | String | Web URL of the blob | | `webUrl` | String | Web URL of the blob |
## Board ## Board
...@@ -234,6 +235,7 @@ Autogenerated return type of BoardListUpdateLimitMetrics ...@@ -234,6 +235,7 @@ Autogenerated return type of BoardListUpdateLimitMetrics
| `authorName` | String | Commit authors name | | `authorName` | String | Commit authors name |
| `authoredDate` | Time | Timestamp of when the commit was authored | | `authoredDate` | Time | Timestamp of when the commit was authored |
| `description` | String | Description of the commit message | | `description` | String | Description of the commit message |
| `descriptionHtml` | String | The GitLab Flavored Markdown rendering of `description` |
| `id` | ID! | ID (global ID) of the commit | | `id` | ID! | ID (global ID) of the commit |
| `latestPipeline` **{warning-solid}** | Pipeline | **Deprecated:** Use `pipelines`. Deprecated in 12.5 | | `latestPipeline` **{warning-solid}** | Pipeline | **Deprecated:** Use `pipelines`. Deprecated in 12.5 |
| `message` | String | Raw commit message | | `message` | String | Raw commit message |
...@@ -241,6 +243,7 @@ Autogenerated return type of BoardListUpdateLimitMetrics ...@@ -241,6 +243,7 @@ Autogenerated return type of BoardListUpdateLimitMetrics
| `signatureHtml` | String | Rendered HTML of the commit signature | | `signatureHtml` | String | Rendered HTML of the commit signature |
| `title` | String | Title of the commit message | | `title` | String | Title of the commit message |
| `titleHtml` | String | The GitLab Flavored Markdown rendering of `title` | | `titleHtml` | String | The GitLab Flavored Markdown rendering of `title` |
| `webPath` | String! | Web path of the commit |
| `webUrl` | String! | Web URL of the commit | | `webUrl` | String! | Web URL of the commit |
## CommitCreatePayload ## CommitCreatePayload
...@@ -2072,6 +2075,7 @@ Represents a directory ...@@ -2072,6 +2075,7 @@ Represents a directory
| `path` | String! | Path of the entry | | `path` | String! | Path of the entry |
| `sha` | String! | Last commit sha for the entry | | `sha` | String! | Last commit sha for the entry |
| `type` | EntryType! | Type of tree entry | | `type` | EntryType! | Type of tree entry |
| `webPath` | String | Web path for the tree entry (directory) |
| `webUrl` | String | Web URL for the tree entry (directory) | | `webUrl` | String | Web URL for the tree entry (directory) |
## UpdateAlertStatusPayload ## UpdateAlertStatusPayload
...@@ -2176,6 +2180,7 @@ Autogenerated return type of UpdateSnippet ...@@ -2176,6 +2180,7 @@ Autogenerated return type of UpdateSnippet
| `state` | UserState! | State of the user | | `state` | UserState! | State of the user |
| `userPermissions` | UserPermissions! | Permissions for the current user on the resource | | `userPermissions` | UserPermissions! | Permissions for the current user on the resource |
| `username` | String! | Username of the user. Unique within this instance of GitLab | | `username` | String! | Username of the user. Unique within this instance of GitLab |
| `webPath` | String! | Web path of the user |
| `webUrl` | String! | Web URL of the user | | `webUrl` | String! | Web URL of the user |
## UserPermissions ## UserPermissions
......
...@@ -9,8 +9,8 @@ RSpec.describe GitlabSchema.types['Commit'] do ...@@ -9,8 +9,8 @@ RSpec.describe GitlabSchema.types['Commit'] do
it 'contains attributes related to commit' do it 'contains attributes related to commit' do
expect(described_class).to have_graphql_fields( expect(described_class).to have_graphql_fields(
:id, :sha, :title, :description, :message, :title_html, :authored_date, :id, :sha, :title, :description, :description_html, :message, :title_html, :authored_date,
:author_name, :author_gravatar, :author, :web_url, :latest_pipeline, :author_name, :author_gravatar, :author, :web_url, :web_path, :latest_pipeline,
:pipelines, :signature_html :pipelines, :signature_html
) )
end end
......
...@@ -5,5 +5,5 @@ require 'spec_helper' ...@@ -5,5 +5,5 @@ require 'spec_helper'
RSpec.describe Types::Tree::BlobType do RSpec.describe Types::Tree::BlobType do
specify { expect(described_class.graphql_name).to eq('Blob') } specify { expect(described_class.graphql_name).to eq('Blob') }
specify { expect(described_class).to have_graphql_fields(:id, :sha, :name, :type, :path, :flat_path, :web_url, :lfs_oid, :mode) } specify { expect(described_class).to have_graphql_fields(:id, :sha, :name, :type, :path, :flat_path, :web_url, :web_path, :lfs_oid, :mode) }
end end
...@@ -5,5 +5,5 @@ require 'spec_helper' ...@@ -5,5 +5,5 @@ require 'spec_helper'
RSpec.describe Types::Tree::TreeEntryType do RSpec.describe Types::Tree::TreeEntryType do
specify { expect(described_class.graphql_name).to eq('TreeEntry') } specify { expect(described_class.graphql_name).to eq('TreeEntry') }
specify { expect(described_class).to have_graphql_fields(:id, :sha, :name, :type, :path, :flat_path, :web_url) } specify { expect(described_class).to have_graphql_fields(:id, :sha, :name, :type, :path, :flat_path, :web_url, :web_path) }
end end
...@@ -16,6 +16,7 @@ RSpec.describe GitlabSchema.types['User'] do ...@@ -16,6 +16,7 @@ RSpec.describe GitlabSchema.types['User'] do
username username
avatarUrl avatarUrl
webUrl webUrl
webPath
todos todos
state state
authoredMergeRequests authoredMergeRequests
......
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