class CodeChange

Attributes

approved[R]
code_change_activity[RW]
id[R]
includes_self[R]
is_merged[R]
is_self[R]
last_approval_status[R]
last_pipeline_status[R]
last_pipeline_updated_at[R]
owner[R]
pipeline_status[R]
pipeline_updated_at[R]
project[R]
subject[R]
web_url[R]

Public Class Methods

new(id, owner, project, subject, web_url = nil, pipeline_updated_at = nil, pipeline_status = nil, approved = nil, is_merged = nil, is_self = nil, includes_self = nil) click to toggle source
# File lib/models/code_change.rb, line 8
def initialize(id, owner, project, subject, web_url = nil, pipeline_updated_at = nil, pipeline_status = nil, approved = nil, is_merged = nil, is_self = nil, includes_self = nil)
  @id = id
  @owner = owner
  @is_merged = is_merged
  @project = project
  @subject = subject.gsub("'", "’")
  @web_url = web_url
  @pipeline_updated_at = pipeline_updated_at
  @pipeline_status = pipeline_status
  @approved = approved
  row = Rubiclifier::DB.query_single_row("SELECT pipeline_updated_at, last_approval_status, last_pipeline_status FROM code_change WHERE id = '#{id}'") || [Time.now().to_s, approved, pipeline_status]
  @last_approval_status = row[1] == 1
  @last_pipeline_status = row[2]
  @last_pipeline_updated_at = row[0] == "" ? Time.now() : Time.parse(row[0])
  @is_self = is_self
  @includes_self = includes_self
end

Public Instance Methods

activity_from_self_at() click to toggle source
# File lib/models/code_change.rb, line 26
def activity_from_self_at
  @activity_from_self_at ||= code_change_activity.find { |a| a.is_self }&.created_at
end
generate_additional_activity() click to toggle source
# File lib/models/code_change.rb, line 30
def generate_additional_activity
  if is_self
    @code_change_activity.push(GitlabCodeChangeActivity.new("#{id}-placeholder", owner, true, "placeholder", Time.now() - 100000, self))
  end
  if !is_merged
    @code_change_activity.push(GitlabCodeChangeActivity.new("#{id}-opened", owner, is_self, "just opened merge request", Time.now(), self))
  end
  if pipeline_updated_at && pipeline_updated_at > last_pipeline_updated_at && pipeline_status != last_pipeline_status
    @code_change_activity.push(GitlabCodeChangeActivity.new(nil, "Gitlab", false, "pipeline status: #{pipeline_status}", Time.now(), self))
  end
  if approved != last_approval_status
    @code_change_activity.push(GitlabCodeChangeActivity.new(nil, "Gitlab", false, approved ? "fully approved" : "needs approvals again", Time.now(), self))
  end
end
persist() click to toggle source
# File lib/models/code_change.rb, line 45
def persist
  if Rubiclifier::DB.query_single_row("SELECT id FROM code_change WHERE id = '#{id}'")
    Rubiclifier::DB.execute("UPDATE code_change SET pipeline_updated_at = '#{pipeline_updated_at.to_s}', last_pipeline_status = '#{pipeline_status}', last_approval_status = #{approved} WHERE id = '#{id}';")
  else
    Rubiclifier::DB.execute("INSERT INTO code_change (id, pipeline_updated_at, last_pipeline_status, last_approval_status) VALUES('#{id}', '#{pipeline_updated_at.to_s}', '#{pipeline_status}', #{approved});")
  end
end