class PactBroker::DB::CleanTask
Attributes
database_connection[RW]
dry_run[RW]
keep_version_selectors[R]
logger[RW]
version_deletion_limit[RW]
Public Class Methods
new(&block)
click to toggle source
# File lib/pact_broker/tasks/clean_task.rb, line 11 def initialize &block require "pact_broker/db/clean_incremental" @version_deletion_limit = 1000 @dry_run = false @keep_version_selectors = PactBroker::DB::CleanIncremental::DEFAULT_KEEP_SELECTORS rake_task(&block) end
Public Instance Methods
keep_version_selectors=(keep_version_selectors)
click to toggle source
# File lib/pact_broker/tasks/clean_task.rb, line 19 def keep_version_selectors=(keep_version_selectors) require "pact_broker/db/clean/selector" @keep_version_selectors = [*keep_version_selectors].collect do | hash | PactBroker::DB::Clean::Selector.from_hash(hash) end end
output(string, payload = {})
click to toggle source
# File lib/pact_broker/tasks/clean_task.rb, line 64 def output string, payload = {} logger ? logger.info(string, payload: payload) : puts("#{string} #{payload.to_json}") end
rake_task(&block)
click to toggle source
# File lib/pact_broker/tasks/clean_task.rb, line 26 def rake_task &block namespace :pact_broker do namespace :db do desc "Clean unnecessary pacts and verifications from database" task :clean do | _t, _args | instance_eval(&block) require "pact_broker/db/clean_incremental" require "pact_broker/error" require "yaml" require "benchmark" raise PactBroker::Error.new("You must specify the version_deletion_limit") unless version_deletion_limit prefix = dry_run ? "[DRY RUN] " : "" if keep_version_selectors.nil? || keep_version_selectors.empty? raise PactBroker::Error.new("You must specify which versions to keep") else output "#{prefix}Deleting oldest #{version_deletion_limit} versions, keeping versions that match the configured selectors", keep_version_selectors end start_time = Time.now results = PactBroker::DB::CleanIncremental.call(database_connection, keep: keep_version_selectors, limit: version_deletion_limit, logger: logger, dry_run: dry_run ) end_time = Time.now elapsed_seconds = (end_time - start_time).to_i output "Results (#{elapsed_seconds} seconds)", results end end end end