summaryrefslogtreecommitdiff
path: root/app/models/merge_request/metrics.rb
blob: 18b1e7c5bf302a5adabad0ab737a4c1c57d3c13f (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
28
29
30
31
32
33
34
35
class MergeRequest::Metrics < ActiveRecord::Base
  belongs_to :merge_request

  def record!
    if !merge_request.work_in_progress? && self.wip_flag_first_removed_at.blank?
      self.wip_flag_first_removed_at = Time.now
    end

    if merge_request.author_id != merge_request.assignee_id && self.first_assigned_to_user_other_than_author.blank?
      self.first_assigned_to_user_other_than_author = Time.now
    end

    if merge_request.merged? && self.merged_at.blank?
      self.merged_at = Time.now
    end

    if merge_request.closed? && self.first_closed_at.blank?
      self.first_closed_at = Time.now
    end

    self.save if self.changed?
  end

  def record_production_deploy!(deploy_time)
    self.update(first_deployed_to_production_at: deploy_time) if self.first_deployed_to_production_at.blank?
  end

  def record_latest_build_start_time!(start_time)
    self.update(latest_build_started_at: start_time, latest_build_finished_at: nil)
  end

  def record_latest_build_finish_time!(finish_time)
    self.update(latest_build_finished_at: finish_time)
  end
end