diff options
author | Grzegorz Bizon <grzegorz@gitlab.com> | 2017-12-05 17:30:59 +0300 |
---|---|---|
committer | Grzegorz Bizon <grzegorz@gitlab.com> | 2017-12-05 17:30:59 +0300 |
commit | 003a816afa885d56aa1eb4aadbad2b13b1baa25b (patch) | |
tree | ba40a1da8ce0c3844ba1ebf0abbffc4ab66d599d /app/models/concerns | |
parent | 29be9c1acc9523a513ce32d8a56298db1a038873 (diff) | |
parent | 9711b34491d5cfd6eb2bf379f43dbbcd629a572c (diff) |
Merge branch 'zj-multiple-artifacts' into 'master'
Multiple artifacts
See merge request gitlab-org/gitlab-ce!14367
Diffstat (limited to 'app/models/concerns')
-rw-r--r-- | app/models/concerns/artifact_migratable.rb | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/app/models/concerns/artifact_migratable.rb b/app/models/concerns/artifact_migratable.rb new file mode 100644 index 00000000000..0460439e9e6 --- /dev/null +++ b/app/models/concerns/artifact_migratable.rb @@ -0,0 +1,45 @@ +# Adapter class to unify the interface between mounted uploaders and the +# Ci::Artifact model +# Meant to be prepended so the interface can stay the same +module ArtifactMigratable + def artifacts_file + job_artifacts_archive&.file || legacy_artifacts_file + end + + def artifacts_metadata + job_artifacts_metadata&.file || legacy_artifacts_metadata + end + + def artifacts? + !artifacts_expired? && artifacts_file.exists? + end + + def artifacts_metadata? + artifacts? && artifacts_metadata.exists? + end + + def artifacts_file_changed? + job_artifacts_archive&.file_changed? || attribute_changed?(:artifacts_file) + end + + def remove_artifacts_file! + if job_artifacts_archive + job_artifacts_archive.destroy + else + remove_legacy_artifacts_file! + end + end + + def remove_artifacts_metadata! + if job_artifacts_metadata + job_artifacts_metadata.destroy + else + remove_legacy_artifacts_metadata! + end + end + + def artifacts_size + read_attribute(:artifacts_size).to_i + + job_artifacts_archive&.size.to_i + job_artifacts_metadata&.size.to_i + end +end |