diff options
Diffstat (limited to 'app/models/packages/cleanup/policy.rb')
-rw-r--r-- | app/models/packages/cleanup/policy.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/app/models/packages/cleanup/policy.rb b/app/models/packages/cleanup/policy.rb new file mode 100644 index 00000000000..87c101cfb8c --- /dev/null +++ b/app/models/packages/cleanup/policy.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +module Packages + module Cleanup + class Policy < ApplicationRecord + include Schedulable + + KEEP_N_DUPLICATED_PACKAGE_FILES_VALUES = %w[all 1 10 20 30 40 50].freeze + + self.primary_key = :project_id + + belongs_to :project + + validates :project, presence: true + validates :keep_n_duplicated_package_files, + inclusion: { + in: KEEP_N_DUPLICATED_PACKAGE_FILES_VALUES, + message: 'keep_n_duplicated_package_files is invalid' + } + + # used by Schedulable + def self.active + where.not(keep_n_duplicated_package_files: 'all') + end + + def set_next_run_at + # fixed cadence of 12 hours + self.next_run_at = Time.zone.now + 12.hours + end + end + end +end |