summaryrefslogtreecommitdiff
path: root/app/graphql/resolvers/project_pipeline_statistics_resolver.rb
blob: 79d01b9bf2ebf09589d5660304a184d61ceec8ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# frozen_string_literal: true

module Resolvers
  class ProjectPipelineStatisticsResolver < BaseResolver
    include Gitlab::Graphql::Authorize::AuthorizeResource
    type Types::Ci::AnalyticsType, null: true

    authorizes_object!
    authorize :read_ci_cd_analytics

    def resolve
      weekly_stats = Gitlab::Ci::Charts::WeekChart.new(object)
      monthly_stats = Gitlab::Ci::Charts::MonthChart.new(object)
      yearly_stats = Gitlab::Ci::Charts::YearChart.new(object)
      pipeline_times = Gitlab::Ci::Charts::PipelineTime.new(object)

      {
        week_pipelines_labels: weekly_stats.labels,
        week_pipelines_totals: weekly_stats.total,
        week_pipelines_successful: weekly_stats.success,
        month_pipelines_labels: monthly_stats.labels,
        month_pipelines_totals: monthly_stats.total,
        month_pipelines_successful: monthly_stats.success,
        year_pipelines_labels: yearly_stats.labels,
        year_pipelines_totals: yearly_stats.total,
        year_pipelines_successful: yearly_stats.success,
        pipeline_times_labels: pipeline_times.labels,
        pipeline_times_values: pipeline_times.pipeline_times
      }
    end
  end
end