diff options
Diffstat (limited to 'app/models/releases/evidence.rb')
-rw-r--r-- | app/models/releases/evidence.rb | 55 |
1 files changed, 23 insertions, 32 deletions
diff --git a/app/models/releases/evidence.rb b/app/models/releases/evidence.rb index 1aac7e33e41..7c428f5ad03 100644 --- a/app/models/releases/evidence.rb +++ b/app/models/releases/evidence.rb @@ -1,44 +1,35 @@ # frozen_string_literal: true -class Releases::Evidence < ApplicationRecord - include ShaAttribute - include Presentable +module Releases + class Evidence < ApplicationRecord + include ShaAttribute + include Presentable - belongs_to :release, inverse_of: :evidences + belongs_to :release, inverse_of: :evidences - before_validation :generate_summary_and_sha + default_scope { order(created_at: :asc) } # rubocop:disable Cop/DefaultScope - default_scope { order(created_at: :asc) } + sha_attribute :summary_sha + alias_attribute :collected_at, :created_at + alias_attribute :sha, :summary_sha - sha_attribute :summary_sha - alias_attribute :collected_at, :created_at - - def milestones - @milestones ||= release.milestones.includes(:issues) - end - - ## - # Return `summary` without sensitive information. - # - # Removing issues from summary in order to prevent leaking confidential ones. - # See more https://gitlab.com/gitlab-org/gitlab/issues/121930 - def summary - safe_summary = read_attribute(:summary) - - safe_summary.dig('release', 'milestones')&.each do |milestone| - milestone.delete('issues') + def milestones + @milestones ||= release.milestones.includes(:issues) end - safe_summary - end - - private + ## + # Return `summary` without sensitive information. + # + # Removing issues from summary in order to prevent leaking confidential ones. + # See more https://gitlab.com/gitlab-org/gitlab/issues/121930 + def summary + safe_summary = read_attribute(:summary) - def generate_summary_and_sha - summary = Evidences::EvidenceSerializer.new.represent(self) # rubocop: disable CodeReuse/Serializer - return unless summary + safe_summary.dig('release', 'milestones')&.each do |milestone| + milestone.delete('issues') + end - self.summary = summary - self.summary_sha = Gitlab::CryptoHelper.sha256(summary) + safe_summary + end end end |