diff options
| author | Z.J. van de Weg <git@zjvandeweg.nl> | 2017-05-23 17:10:07 +0200 |
|---|---|---|
| committer | Z.J. van de Weg <git@zjvandeweg.nl> | 2017-05-31 21:44:15 +0200 |
| commit | 47a0276e53de4635df43124607ac1a101d6f1b70 (patch) | |
| tree | e7c8d5644f9aceca23c00c280490c5bbad5b1607 /app/serializers | |
| parent | f06daa26efc127565e4e68ca9d4ac62e5a1e3b36 (diff) | |
| download | gitlab-ce-47a0276e53de4635df43124607ac1a101d6f1b70.tar.gz | |
Initial implementation for real time job view
Added the needed keys and paths to a new entity, BuildDetailsEntity.
Not renaming BuildEntity to BuildBasicEntity on explicit request. Most
code now has test coverage, but not all. This will be added on later
commits on this branch.
Resolves gitlab-org/gitlab-ce#31397
Diffstat (limited to 'app/serializers')
| -rw-r--r-- | app/serializers/build_details_entity.rb | 34 | ||||
| -rw-r--r-- | app/serializers/build_serializer.rb | 4 | ||||
| -rw-r--r-- | app/serializers/runner_entity.rb | 3 |
3 files changed, 40 insertions, 1 deletions
diff --git a/app/serializers/build_details_entity.rb b/app/serializers/build_details_entity.rb new file mode 100644 index 00000000000..08c5e69180c --- /dev/null +++ b/app/serializers/build_details_entity.rb @@ -0,0 +1,34 @@ +class BuildDetailsEntity < BuildEntity + expose :coverage, :erased_at, :duration + expose :tag_list, as: :tags + + expose :artifacts, using: BuildArtifactEntity + expose :runner, using: RunnerEntity + expose :pipeline, using: PipelineEntity + + expose :merge_request_path do |build| + merge_request = build.merge_request + project = build.project + + if merge_request.nil? || !can?(request.current_user, :read_merge_request, project) + nil + else + namespace_project_merge_request_path(project.namespace, project, merge_request) + end + end + + expose :new_issue_path do |build| + project = build.project + + unless build.failed? && can?(request.current_user, :create_issue, project) + nil + else + new_namespace_project_issue_path(project.namespace, project) + end + end + + expose :raw_path do |build| + project = build.project + raw_namespace_project_build_path(project.namespace, project, build) + end +end diff --git a/app/serializers/build_serializer.rb b/app/serializers/build_serializer.rb index 79b67001199..7b501a52604 100644 --- a/app/serializers/build_serializer.rb +++ b/app/serializers/build_serializer.rb @@ -1,8 +1,10 @@ class BuildSerializer < BaseSerializer entity BuildEntity - def represent_status(resource) + def represent_status(resource, opts = {}, entity_class = nil) data = represent(resource, { only: [:status] }) data.fetch(:status, {}) + + represent(resource, opts, entity_class) end end diff --git a/app/serializers/runner_entity.rb b/app/serializers/runner_entity.rb new file mode 100644 index 00000000000..77d6de6e84c --- /dev/null +++ b/app/serializers/runner_entity.rb @@ -0,0 +1,3 @@ +class RunnerEntity < Grape::Entity + expose :id, :name, :description +end |
