Merge branch '31544-size-of-project-from-api' into 'master'
Resolve "Size of project from API" Closes #31544 See merge request !11013
This commit is contained in:
commit
12c34c1cbb
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: Expose project statistics on single requests via the API
|
||||||
|
merge_request:
|
||||||
|
author:
|
|
@ -40,6 +40,7 @@ Parameters:
|
||||||
| `owned` | boolean | no | Limit by projects owned by the current user |
|
| `owned` | boolean | no | Limit by projects owned by the current user |
|
||||||
| `membership` | boolean | no | Limit by projects that the current user is a member of |
|
| `membership` | boolean | no | Limit by projects that the current user is a member of |
|
||||||
| `starred` | boolean | no | Limit by projects starred by the current user |
|
| `starred` | boolean | no | Limit by projects starred by the current user |
|
||||||
|
| `statistics` | boolean | no | Include project statistics |
|
||||||
|
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
|
@ -91,7 +92,14 @@ Parameters:
|
||||||
"shared_with_groups": [],
|
"shared_with_groups": [],
|
||||||
"only_allow_merge_if_pipeline_succeeds": false,
|
"only_allow_merge_if_pipeline_succeeds": false,
|
||||||
"only_allow_merge_if_all_discussions_are_resolved": false,
|
"only_allow_merge_if_all_discussions_are_resolved": false,
|
||||||
"request_access_enabled": false
|
"request_access_enabled": false,
|
||||||
|
"statistics": {
|
||||||
|
"commit_count": 37,
|
||||||
|
"storage_size": 1038090,
|
||||||
|
"repository_size": 1038090,
|
||||||
|
"lfs_objects_size": 0,
|
||||||
|
"job_artifacts_size": 0
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 6,
|
"id": 6,
|
||||||
|
@ -151,7 +159,14 @@ Parameters:
|
||||||
"shared_with_groups": [],
|
"shared_with_groups": [],
|
||||||
"only_allow_merge_if_pipeline_succeeds": false,
|
"only_allow_merge_if_pipeline_succeeds": false,
|
||||||
"only_allow_merge_if_all_discussions_are_resolved": false,
|
"only_allow_merge_if_all_discussions_are_resolved": false,
|
||||||
"request_access_enabled": false
|
"request_access_enabled": false,
|
||||||
|
"statistics": {
|
||||||
|
"commit_count": 12,
|
||||||
|
"storage_size": 2066080,
|
||||||
|
"repository_size": 2066080,
|
||||||
|
"lfs_objects_size": 0,
|
||||||
|
"job_artifacts_size": 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
@ -170,6 +185,7 @@ Parameters:
|
||||||
| Attribute | Type | Required | Description |
|
| Attribute | Type | Required | Description |
|
||||||
| --------- | ---- | -------- | ----------- |
|
| --------- | ---- | -------- | ----------- |
|
||||||
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) |
|
| `id` | integer/string | yes | The ID or [URL-encoded path of the project](README.md#namespaced-path-encoding) |
|
||||||
|
| `statistics` | boolean | no | Include project statistics |
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -241,7 +257,14 @@ Parameters:
|
||||||
],
|
],
|
||||||
"only_allow_merge_if_pipeline_succeeds": false,
|
"only_allow_merge_if_pipeline_succeeds": false,
|
||||||
"only_allow_merge_if_all_discussions_are_resolved": false,
|
"only_allow_merge_if_all_discussions_are_resolved": false,
|
||||||
"request_access_enabled": false
|
"request_access_enabled": false,
|
||||||
|
"statistics": {
|
||||||
|
"commit_count": 37,
|
||||||
|
"storage_size": 1038090,
|
||||||
|
"repository_size": 1038090,
|
||||||
|
"lfs_objects_size": 0,
|
||||||
|
"job_artifacts_size": 0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,10 @@ module API
|
||||||
params :optional_params do
|
params :optional_params do
|
||||||
use :optional_params_ce
|
use :optional_params_ce
|
||||||
end
|
end
|
||||||
|
|
||||||
|
params :statistics_params do
|
||||||
|
optional :statistics, type: Boolean, default: false, desc: 'Include project statistics'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
resource :projects do
|
resource :projects do
|
||||||
|
@ -56,10 +60,6 @@ module API
|
||||||
optional :membership, type: Boolean, default: false, desc: 'Limit by projects that the current user is a member of'
|
optional :membership, type: Boolean, default: false, desc: 'Limit by projects that the current user is a member of'
|
||||||
end
|
end
|
||||||
|
|
||||||
params :statistics_params do
|
|
||||||
optional :statistics, type: Boolean, default: false, desc: 'Include project statistics'
|
|
||||||
end
|
|
||||||
|
|
||||||
params :create_params do
|
params :create_params do
|
||||||
optional :namespace_id, type: Integer, desc: 'Namespace ID for the new project. Default to the user namespace.'
|
optional :namespace_id, type: Integer, desc: 'Namespace ID for the new project. Default to the user namespace.'
|
||||||
optional :import_url, type: String, desc: 'URL from which the project is imported'
|
optional :import_url, type: String, desc: 'URL from which the project is imported'
|
||||||
|
@ -85,6 +85,7 @@ module API
|
||||||
end
|
end
|
||||||
params do
|
params do
|
||||||
use :collection_params
|
use :collection_params
|
||||||
|
use :statistics_params
|
||||||
end
|
end
|
||||||
get do
|
get do
|
||||||
entity = current_user ? Entities::ProjectWithAccess : Entities::BasicProjectDetails
|
entity = current_user ? Entities::ProjectWithAccess : Entities::BasicProjectDetails
|
||||||
|
@ -151,10 +152,13 @@ module API
|
||||||
desc 'Get a single project' do
|
desc 'Get a single project' do
|
||||||
success Entities::ProjectWithAccess
|
success Entities::ProjectWithAccess
|
||||||
end
|
end
|
||||||
|
params do
|
||||||
|
use :statistics_params
|
||||||
|
end
|
||||||
get ":id" do
|
get ":id" do
|
||||||
entity = current_user ? Entities::ProjectWithAccess : Entities::BasicProjectDetails
|
entity = current_user ? Entities::ProjectWithAccess : Entities::BasicProjectDetails
|
||||||
present user_project, with: entity, current_user: current_user,
|
present user_project, with: entity, current_user: current_user,
|
||||||
user_can_admin_project: can?(current_user, :admin_project, user_project)
|
user_can_admin_project: can?(current_user, :admin_project, user_project), statistics: params[:statistics]
|
||||||
end
|
end
|
||||||
|
|
||||||
desc 'Get events for a single project' do
|
desc 'Get events for a single project' do
|
||||||
|
|
|
@ -665,6 +665,20 @@ describe API::Projects do
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "does not include statistics by default" do
|
||||||
|
get api("/projects/#{project.id}", user)
|
||||||
|
|
||||||
|
expect(response).to have_http_status(200)
|
||||||
|
expect(json_response).not_to include 'statistics'
|
||||||
|
end
|
||||||
|
|
||||||
|
it "includes statistics if requested" do
|
||||||
|
get api("/projects/#{project.id}", user), statistics: true
|
||||||
|
|
||||||
|
expect(response).to have_http_status(200)
|
||||||
|
expect(json_response).to include 'statistics'
|
||||||
|
end
|
||||||
|
|
||||||
describe 'permissions' do
|
describe 'permissions' do
|
||||||
context 'all projects' do
|
context 'all projects' do
|
||||||
before { project.team << [user, :master] }
|
before { project.team << [user, :master] }
|
||||||
|
|
Loading…
Reference in New Issue