Module: Analytics::CycleAnalytics::Stageable

Extended by:
ActiveSupport::Concern
Includes:
Gitlab::Utils::StrongMemoize
Included in:
Stage
Defined in:
app/models/concerns/analytics/cycle_analytics/stageable.rb

Instance Method Summary collapse

Instance Method Details

#default_stage?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'app/models/concerns/analytics/cycle_analytics/stageable.rb', line 79

def default_stage?
  !custom
end

#end_eventObject



44
45
46
# File 'app/models/concerns/analytics/cycle_analytics/stageable.rb', line 44

def end_event
  Gitlab::Analytics::CycleAnalytics::StageEvents[end_event_identifier].new(params_for_end_event)
end

#end_event_identifier=(identifier) ⇒ Object



66
67
68
69
# File 'app/models/concerns/analytics/cycle_analytics/stageable.rb', line 66

def end_event_identifier=(identifier)
  clear_memoization(:end_event)
  super
end

#end_event_label_based?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'app/models/concerns/analytics/cycle_analytics/stageable.rb', line 57

def end_event_label_based?
  end_event_identifier && end_event.label_based?
end

#events_hash_codeObject



49
50
51
# File 'app/models/concerns/analytics/cycle_analytics/stageable.rb', line 49

def events_hash_code
  Digest::SHA256.hexdigest("#{start_event.hash_code}-#{end_event.hash_code}")
end

#matches_with_stage_params?(stage_params) ⇒ Boolean

Returns:

  • (Boolean)


88
89
90
91
92
# File 'app/models/concerns/analytics/cycle_analytics/stageable.rb', line 88

def matches_with_stage_params?(stage_params)
  default_stage? &&
    start_event_identifier.to_s.eql?(stage_params[:start_event_identifier].to_s) &&
    end_event_identifier.to_s.eql?(stage_params[:end_event_identifier].to_s)
end

#params_for_end_eventObject



75
76
77
# File 'app/models/concerns/analytics/cycle_analytics/stageable.rb', line 75

def params_for_end_event
  end_event_label.present? ? { label: end_event_label } : {}
end

#params_for_start_eventObject



71
72
73
# File 'app/models/concerns/analytics/cycle_analytics/stageable.rb', line 71

def params_for_start_event
  start_event_label.present? ? { label: start_event_label } : {}
end

#start_eventObject



39
40
41
# File 'app/models/concerns/analytics/cycle_analytics/stageable.rb', line 39

def start_event
  Gitlab::Analytics::CycleAnalytics::StageEvents[start_event_identifier].new(params_for_start_event)
end

#start_event_identifier=(identifier) ⇒ Object



61
62
63
64
# File 'app/models/concerns/analytics/cycle_analytics/stageable.rb', line 61

def start_event_identifier=(identifier)
  clear_memoization(:start_event)
  super
end

#start_event_label_based?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'app/models/concerns/analytics/cycle_analytics/stageable.rb', line 53

def start_event_label_based?
  start_event_identifier && start_event.label_based?
end

#subject_classObject

The model class that is going to be queried, Issue or MergeRequest



84
85
86
# File 'app/models/concerns/analytics/cycle_analytics/stageable.rb', line 84

def subject_class
  start_event.object_type
end