diff options
Diffstat (limited to 'app/models/ci/pipeline_artifact.rb')
-rw-r--r-- | app/models/ci/pipeline_artifact.rb | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/app/models/ci/pipeline_artifact.rb b/app/models/ci/pipeline_artifact.rb index e7f51977ccd..b6db8cad667 100644 --- a/app/models/ci/pipeline_artifact.rb +++ b/app/models/ci/pipeline_artifact.rb @@ -5,33 +5,44 @@ module Ci class PipelineArtifact < ApplicationRecord extend Gitlab::Ci::Model + include UpdateProjectStatistics include Artifactable include FileStoreMounter - - FILE_STORE_SUPPORTED = [ - ObjectStorage::Store::LOCAL, - ObjectStorage::Store::REMOTE - ].freeze + include Presentable FILE_SIZE_LIMIT = 10.megabytes.freeze + EXPIRATION_DATE = 1.week.freeze + + DEFAULT_FILE_NAMES = { + code_coverage: 'code_coverage.json' + }.freeze belongs_to :project, class_name: "Project", inverse_of: :pipeline_artifacts belongs_to :pipeline, class_name: "Ci::Pipeline", inverse_of: :pipeline_artifacts validates :pipeline, :project, :file_format, :file, presence: true - validates :file_store, presence: true, inclusion: { in: FILE_STORE_SUPPORTED } + validates :file_store, presence: true, inclusion: { in: ObjectStorage::SUPPORTED_STORES } validates :size, presence: true, numericality: { less_than_or_equal_to: FILE_SIZE_LIMIT } validates :file_type, presence: true mount_file_store_uploader Ci::PipelineArtifactUploader - before_save :set_size, if: :file_changed? + + update_project_statistics project_statistics_name: :pipeline_artifacts_size enum file_type: { code_coverage: 1 } - def set_size - self.size = file.size + def self.has_code_coverage? + where(file_type: :code_coverage).exists? + end + + def self.find_with_code_coverage + find_by(file_type: :code_coverage) + end + + def present + super(presenter_class: "Ci::PipelineArtifacts::#{self.file_type.camelize}Presenter".constantize) end end end |