Sha256: 2da25d6dfcbb34482a2f898d76ab27f26e991e6280b6e7a6ed751e344bdb76e0

Contents?: true

Size: 1.57 KB

Versions: 3

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true

require 'backup/remove_specified/remove_with_all_dependencies'
require 'backup/remove_specified/remove_heavy_data'

class Backup
  class RemoveSpecified
    include RemoveHeavyData
    include RemoveWithAllDependencies

    attr_reader :config

    def initialize(config, dry_run_reporter=nil)
      @config = config
      @dry_run_reporter = dry_run_reporter
    end

    def dry_run_report
      @dry_run_reporter.report
    end

    def run(args={})
      user_id = args[:user_id] || @config.user_id
      repo_id = args[:repo_id] || @config.repo_id
      org_id = args[:org_id] || @config.org_id

      if user_id
        process_user(user_id)
      elsif org_id
        process_organization(org_id)
      elsif repo_id
        process_repo_with_id(repo_id)
      else
        process_all_repos
      end
    end

    def process_user(user_id)
      if @config.threshold
        remove_heavy_data_for_repos_owned_by(user_id, 'User')
      else
        remove_user_with_dependencies(user_id)
      end
    end

    def process_organization(org_id)
      if @config.threshold
        remove_heavy_data_for_repos_owned_by(org_id, 'Organization')
      else
        remove_org_with_dependencies(org_id)
      end
    end

    def process_repo_with_id(repo_id)
      if @config.threshold
        remove_heavy_data_for_repo(Repository.find(repo_id))
      else
        remove_repo_with_dependencies(repo_id)
      end
    end

    def process_all_repos
      Repository.order(:id).each do |repository|
        remove_heavy_data_for_repo(repository)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
travis-backup-for-v3-0.1.1 lib/backup/remove_specified.rb
travis-backup-for-v3-0.1.0 lib/backup/remove_specified.rb
travis-backup-0.3.0 lib/backup/remove_specified.rb