summaryrefslogtreecommitdiff
path: root/lib/gitlab/cycle_analytics/events_fetcher.rb
blob: c12fdd58a4716470c26be7d3c25779a7f0e48c9b (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
module Gitlab
  module CycleAnalytics
    class EventsFetcher
      include MetricsFetcher

      def initialize(project:, options:)
        @query = EventsQuery.new(project: project, options: options)
      end

      def fetch(stage:)
        custom_query = "#{stage}_custom_query".to_sym

        @query.execute(stage) do |base_query|
          public_send(custom_query, base_query) if self.respond_to?(custom_query)
        end
      end

      def plan_custom_query(base_query)
        base_query.join(mr_diff_table).on(mr_diff_table[:merge_request_id].eq(mr_table[:id]))
      end

      def test_custom_query(base_query)
        base_query.join(build_table).on(mr_metrics_table[:ci_commit_id].eq(build_table[:commit_id]))
      end

      alias_method :staging_custom_query, :test_custom_query
    end
  end
end