Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/resource_events')
-rw-r--r--app/services/resource_events/base_synthetic_notes_builder_service.rb20
-rw-r--r--app/services/resource_events/change_state_service.rb38
-rw-r--r--app/services/resource_events/synthetic_label_notes_builder_service.rb2
-rw-r--r--app/services/resource_events/synthetic_milestone_notes_builder_service.rb2
-rw-r--r--app/services/resource_events/synthetic_state_notes_builder_service.rb2
5 files changed, 57 insertions, 7 deletions
diff --git a/app/services/resource_events/base_synthetic_notes_builder_service.rb b/app/services/resource_events/base_synthetic_notes_builder_service.rb
index db8bf6e4b74..a2d78ec67c3 100644
--- a/app/services/resource_events/base_synthetic_notes_builder_service.rb
+++ b/app/services/resource_events/base_synthetic_notes_builder_service.rb
@@ -23,11 +23,25 @@ module ResourceEvents
private
- def since_fetch_at(events)
+ def apply_common_filters(events)
+ events = apply_last_fetched_at(events)
+ events = apply_fetch_until(events)
+
+ events
+ end
+
+ def apply_last_fetched_at(events)
return events unless params[:last_fetched_at].present?
- last_fetched_at = Time.zone.at(params.fetch(:last_fetched_at).to_i)
- events.created_after(last_fetched_at - NotesFinder::FETCH_OVERLAP)
+ last_fetched_at = params[:last_fetched_at] - NotesFinder::FETCH_OVERLAP
+
+ events.created_after(last_fetched_at)
+ end
+
+ def apply_fetch_until(events)
+ return events unless params[:fetch_until].present?
+
+ events.created_on_or_before(params[:fetch_until])
end
def resource_parent
diff --git a/app/services/resource_events/change_state_service.rb b/app/services/resource_events/change_state_service.rb
index 8beb76d8aee..202972c1efd 100644
--- a/app/services/resource_events/change_state_service.rb
+++ b/app/services/resource_events/change_state_service.rb
@@ -8,12 +8,18 @@ module ResourceEvents
@user, @resource = user, resource
end
- def execute(state)
+ def execute(params)
+ @params = params
+
ResourceStateEvent.create(
user: user,
issue: issue,
merge_request: merge_request,
+ source_commit: commit_id_of(mentionable_source),
+ source_merge_request_id: merge_request_id_of(mentionable_source),
state: ResourceStateEvent.states[state],
+ close_after_error_tracking_resolve: close_after_error_tracking_resolve,
+ close_auto_resolve_prometheus_alert: close_auto_resolve_prometheus_alert,
created_at: Time.zone.now)
resource.expire_note_etag_cache
@@ -21,6 +27,36 @@ module ResourceEvents
private
+ attr_reader :params
+
+ def close_auto_resolve_prometheus_alert
+ params[:close_auto_resolve_prometheus_alert] || false
+ end
+
+ def close_after_error_tracking_resolve
+ params[:close_after_error_tracking_resolve] || false
+ end
+
+ def state
+ params[:status]
+ end
+
+ def mentionable_source
+ params[:mentionable_source]
+ end
+
+ def commit_id_of(mentionable_source)
+ return unless mentionable_source.is_a?(Commit)
+
+ mentionable_source.id[0...40]
+ end
+
+ def merge_request_id_of(mentionable_source)
+ return unless mentionable_source.is_a?(MergeRequest)
+
+ mentionable_source.id
+ end
+
def issue
return unless resource.is_a?(Issue)
diff --git a/app/services/resource_events/synthetic_label_notes_builder_service.rb b/app/services/resource_events/synthetic_label_notes_builder_service.rb
index fd128101b49..5915ea938cf 100644
--- a/app/services/resource_events/synthetic_label_notes_builder_service.rb
+++ b/app/services/resource_events/synthetic_label_notes_builder_service.rb
@@ -19,7 +19,7 @@ module ResourceEvents
return [] unless resource.respond_to?(:resource_label_events)
events = resource.resource_label_events.includes(:label, user: :status) # rubocop: disable CodeReuse/ActiveRecord
- events = since_fetch_at(events)
+ events = apply_common_filters(events)
events.group_by { |event| event.discussion_id }
end
diff --git a/app/services/resource_events/synthetic_milestone_notes_builder_service.rb b/app/services/resource_events/synthetic_milestone_notes_builder_service.rb
index cc6383d7083..10acf94e22b 100644
--- a/app/services/resource_events/synthetic_milestone_notes_builder_service.rb
+++ b/app/services/resource_events/synthetic_milestone_notes_builder_service.rb
@@ -19,7 +19,7 @@ module ResourceEvents
return [] unless resource.respond_to?(:resource_milestone_events)
events = resource.resource_milestone_events.includes(user: :status) # rubocop: disable CodeReuse/ActiveRecord
- since_fetch_at(events)
+ apply_common_filters(events)
end
end
end
diff --git a/app/services/resource_events/synthetic_state_notes_builder_service.rb b/app/services/resource_events/synthetic_state_notes_builder_service.rb
index 763134d98d8..71d40200365 100644
--- a/app/services/resource_events/synthetic_state_notes_builder_service.rb
+++ b/app/services/resource_events/synthetic_state_notes_builder_service.rb
@@ -14,7 +14,7 @@ module ResourceEvents
return [] unless resource.respond_to?(:resource_state_events)
events = resource.resource_state_events.includes(user: :status) # rubocop: disable CodeReuse/ActiveRecord
- since_fetch_at(events)
+ apply_common_filters(events)
end
end
end