class PactBroker::DB::DeleteOverwrittenDataTask

Attributes

database_connection[RW]
deletion_limit[RW]
dry_run[RW]
logger[RW]
max_age[RW]

Public Class Methods

new(&block) click to toggle source
# File lib/pact_broker/tasks/delete_overwritten_data_task.rb, line 10
def initialize &block
  @max_age = 7
  rake_task(&block)
end

Public Instance Methods

output(string, payload = {}) click to toggle source
# File lib/pact_broker/tasks/delete_overwritten_data_task.rb, line 48
def output string, payload = {}
  logger ? logger.info(string, payload) : puts("#{string} #{payload.to_json}")
end
rake_task(&block) click to toggle source
# File lib/pact_broker/tasks/delete_overwritten_data_task.rb, line 15
def rake_task &block
  namespace :pact_broker do
    namespace :db do
      desc "Delete overwritten pacts and verifications from database"
      task :delete_overwritten_data do | _t, _args |
        require "pact_broker/db/delete_overwritten_data"
        require "yaml"

        instance_eval(&block)
        options = {}

        prefix = dry_run ? "[DRY RUN] " : ""

        if max_age
          options[:max_age] = max_age
          output "#{prefix}Deleting overwritten pact publications and verifications older than #{max_age} days"
        else
          output "#{prefix}Deleting overwritten pact publications and verifications"
        end

        options[:limit] = deletion_limit if deletion_limit
        options[:dry_run] = dry_run

        start_time = Time.now
        results = PactBroker::DB::DeleteOverwrittenData.call(database_connection, options)
        end_time = Time.now
        elapsed_seconds = (end_time - start_time).to_i
        output "Results (#{elapsed_seconds} seconds)", results
      end
    end
  end
end