Class: IncidentManagement::TimelineEvents::BaseService

Inherits:
Object
  • Object
show all
Includes:
Gitlab::Utils::UsageData
Defined in:
app/services/incident_management/timeline_events/base_service.rb

Direct Known Subclasses

CreateService, DestroyService, UpdateService

Constant Summary

Constants included from Gitlab::Utils::UsageData

Gitlab::Utils::UsageData::DISTRIBUTED_HLL_FALLBACK, Gitlab::Utils::UsageData::FALLBACK, Gitlab::Utils::UsageData::HISTOGRAM_FALLBACK, Gitlab::Utils::UsageData::MAX_BUCKET_SIZE

Instance Method Summary collapse

Methods included from Gitlab::Utils::UsageData

#add, #add_metric, #alt_usage_data, #average, #count, #distinct_count, #estimate_batch_distinct_count, #histogram, #maximum_id, #measure_duration, #minimum_id, #redis_usage_data, #sum, #track_usage_event, #with_finished_at, #with_metadata, #with_prometheus_client

Instance Method Details

#allowed?Boolean

Returns:

  • (Boolean)


8
9
10
# File 'app/services/incident_management/timeline_events/base_service.rb', line 8

def allowed?
  user&.can?(:admin_incident_management_timeline_event, incident)
end

#auto_create_predefined_tags(new_tags) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'app/services/incident_management/timeline_events/base_service.rb', line 43

def auto_create_predefined_tags(new_tags)
  new_tags = new_tags.map(&:downcase)

  tags_to_create = TimelineEventTag::PREDEFINED_TAGS.select { |tag| tag.downcase.in?(new_tags) }

  tags_to_create.each do |name|
    project.incident_management_timeline_event_tags.create(name: name)
  end
end

#error(message) ⇒ Object



16
17
18
# File 'app/services/incident_management/timeline_events/base_service.rb', line 16

def error(message)
  ServiceResponse.error(message: message)
end

#error_in_save(timeline_event) ⇒ Object



24
25
26
# File 'app/services/incident_management/timeline_events/base_service.rb', line 24

def error_in_save(timeline_event)
  error(timeline_event.errors.full_messages.to_sentence)
end

#error_no_permissionsObject



20
21
22
# File 'app/services/incident_management/timeline_events/base_service.rb', line 20

def error_no_permissions
  error(_('You have insufficient permissions to manage timeline events for this incident'))
end

#success(timeline_event) ⇒ Object



12
13
14
# File 'app/services/incident_management/timeline_events/base_service.rb', line 12

def success(timeline_event)
  ServiceResponse.success(payload: { timeline_event: timeline_event })
end

#track_timeline_event(event, project) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/services/incident_management/timeline_events/base_service.rb', line 28

def track_timeline_event(event, project)
  namespace = project.namespace
  track_usage_event(event, user.id)

  Gitlab::Tracking.event(
    self.class.to_s,
    event,
    project: project,
    namespace: namespace,
    user: user,
    label: 'redis_hll_counters.incident_management.incident_management_total_unique_counts_monthly',
    context: [Gitlab::Tracking::ServicePingContext.new(data_source: :redis_hll, event: event).to_context]
  )
end