summaryrefslogtreecommitdiff
path: root/lib/gitlab/cycle_analytics/base_event.rb
blob: 254e36215756b25b93e430e9640c4552975a2782 (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
module Gitlab
  module CycleAnalytics
    class BaseEvent
      extend MetricsTables

      class << self
        attr_reader :stage, :start_time_attrs, :end_time_attrs, :projections

        def order
          @order || @start_time_attrs
        end

        def query(base_query); end

        def fetch(query)
          query.execute(self).map { |event| serialize(event, query) }
        end

        private

        def serialize(event, query)
          raise NotImplementedError.new("Expected #{self.name} to implement serialize(event)")
        end
      end
    end
  end
end