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
- #default_stage? ⇒ Boolean
- #end_event ⇒ Object
- #end_event_identifier=(identifier) ⇒ Object
- #end_event_label_based? ⇒ Boolean
- #events_hash_code ⇒ Object
- #matches_with_stage_params?(stage_params) ⇒ Boolean
- #params_for_end_event ⇒ Object
- #params_for_start_event ⇒ Object
- #start_event ⇒ Object
- #start_event_identifier=(identifier) ⇒ Object
- #start_event_label_based? ⇒ Boolean
-
#subject_class ⇒ Object
The model class that is going to be queried, Issue or MergeRequest.
Instance Method Details
#default_stage? ⇒ Boolean
79 80 81 |
# File 'app/models/concerns/analytics/cycle_analytics/stageable.rb', line 79 def default_stage? !custom end |
#end_event ⇒ Object
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
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_code ⇒ Object
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
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_event ⇒ Object
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_event ⇒ Object
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_event ⇒ Object
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
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_class ⇒ Object
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 |