Module: Backup::RemoveSpecified::RemoveHeavyData

Includes:
Shared, SaveIdHashToFile, SaveNullifiedRelsToFile
Included in:
Backup::RemoveSpecified
Defined in:
lib/backup/remove_specified/remove_heavy_data.rb

Instance Method Summary collapse

Methods included from SaveNullifiedRelsToFile

#save_nullified_rels_to_file, #save_rels_batch_to_file

Methods included from SaveFile

#current_time_for_subfolder, #ensure_path, #folder_path, #full_file_path, #save_file

Methods included from SaveIdHashToFile

#get_exported_object, #save_id_hash_to_file, #save_ids_batch_to_file

Instance Method Details

#remove_heavy_data_for_repo(repository) ⇒ Object



19
20
21
22
# File 'lib/backup/remove_specified/remove_heavy_data.rb', line 19

def remove_heavy_data_for_repo(repository)
  remove_repo_builds(repository)
  remove_repo_requests(repository)
end

#remove_heavy_data_for_repos_owned_by(owner_id, owner_type) ⇒ Object



13
14
15
16
17
# File 'lib/backup/remove_specified/remove_heavy_data.rb', line 13

def remove_heavy_data_for_repos_owned_by(owner_id, owner_type)
  Repository.where('owner_id = ? and owner_type = ?', owner_id, owner_type).order(:id).each do |repository|
    remove_heavy_data_for_repo(repository)
  end
end

#remove_repo_builds(repository) ⇒ Object

rubocop:disable Metrics/AbcSize, Metrics/MethodLength



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/backup/remove_specified/remove_heavy_data.rb', line 24

def remove_repo_builds(repository) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
  threshold = @config.threshold.to_i.months.ago.to_datetime
  builds_to_remove = repository.builds.where('created_at < ?', threshold)

  builds_dependencies = builds_to_remove.map do |build|
    result = build.ids_of_all_dependencies(dependencies_to_filter, :without_parents)
    result.add(:build, build.id)
    result
  end.compact

  ids_to_remove = IdHash.join(*builds_dependencies)
  @subfolder = "repository_#{repository.id}_old_builds_#{current_time_for_subfolder}"

  unless @config.dry_run
    nullified_rels = builds_to_remove&.map(&:nullify_default_dependencies)&.flatten
    save_nullified_rels_to_file(build: nullified_rels) if @config.if_backup
  end

  process_ids_to_remove(ids_to_remove)
end

#remove_repo_requests(repository) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/backup/remove_specified/remove_heavy_data.rb', line 45

def remove_repo_requests(repository)
  threshold = @config.threshold.to_i.months.ago.to_datetime
  requests_to_remove = repository.requests.where('created_at < ?', threshold)

  requests_dependencies = requests_to_remove.map do |request|
    hash_with_filtered = request.ids_of_all_dependencies(dependencies_to_filter, :without_parents)
    hash_with_filtered.add(:request, request.id)
  end

  @subfolder = "repository_#{repository.id}_old_requests_#{current_time_for_subfolder}"

  unless @config.dry_run
    nullified_rels = requests_to_remove.map do |request|
      nullify_filtered_dependencies(request)
    end.flatten
    save_nullified_rels_to_file(build: nullified_rels) if @config.if_backup
  end

  ids_to_remove = IdHash.join(*(requests_dependencies))
  process_ids_to_remove(ids_to_remove)
end