Class: PactBroker::DB::CleanIncremental
- Inherits:
-
Object
- Object
- PactBroker::DB::CleanIncremental
- Defined in:
- lib/pact_broker/db/clean_incremental.rb
Constant Summary collapse
- DEFAULT_KEEP_SELECTORS =
[ PactBroker::Matrix::UnresolvedSelector.new(tag: true, latest: true), PactBroker::Matrix::UnresolvedSelector.new(latest: true), PactBroker::Matrix::UnresolvedSelector.new(max_age: 90) ]
- TABLES =
[:versions, :pact_publications, :pact_versions, :verifications, :triggered_webhooks, :webhook_executions]
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(database_connection, options = {}) ⇒ CleanIncremental
constructor
A new instance of CleanIncremental.
- #keep ⇒ Object
- #limit ⇒ Object
- #logger ⇒ Object
- #resolve_ids(query, column_name = :id) ⇒ Object
- #selected_versions_to_keep ⇒ Object
- #version_ids_to_delete ⇒ Object
- #version_ids_to_keep ⇒ Object
Constructor Details
#initialize(database_connection, options = {}) ⇒ CleanIncremental
Returns a new instance of CleanIncremental.
20 21 22 23 |
# File 'lib/pact_broker/db/clean_incremental.rb', line 20 def initialize database_connection, = {} @db = database_connection @options = end |
Class Method Details
.call(database_connection, options = {}) ⇒ Object
16 17 18 |
# File 'lib/pact_broker/db/clean_incremental.rb', line 16 def self.call database_connection, = {} new(database_connection, ).call end |
Instance Method Details
#call ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/pact_broker/db/clean_incremental.rb', line 55 def call require 'pact_broker/db/models' if dry_run? dry_run_results else before_counts = current_counts result = PactBroker::Domain::Version.where(id: resolve_ids(version_ids_to_delete)).delete delete_orphan_pact_versions after_counts = current_counts TABLES.each_with_object({}) do | table_name, comparison_counts | comparison_counts[table_name.to_s] = { "deleted" => before_counts[table_name] - after_counts[table_name], "kept" => after_counts[table_name] } end end end |
#keep ⇒ Object
29 30 31 |
# File 'lib/pact_broker/db/clean_incremental.rb', line 29 def keep [:keep] || DEFAULT_KEEP_SELECTORS end |
#limit ⇒ Object
33 34 35 |
# File 'lib/pact_broker/db/clean_incremental.rb', line 33 def limit [:limit] || 1000 end |
#logger ⇒ Object
25 26 27 |
# File 'lib/pact_broker/db/clean_incremental.rb', line 25 def logger [:logger] || PactBroker.logger end |
#resolve_ids(query, column_name = :id) ⇒ Object
37 38 39 |
# File 'lib/pact_broker/db/clean_incremental.rb', line 37 def resolve_ids(query, column_name = :id) query.collect { |h| h[column_name] } end |
#selected_versions_to_keep ⇒ Object
49 50 51 52 53 |
# File 'lib/pact_broker/db/clean_incremental.rb', line 49 def selected_versions_to_keep keep.collect do | selector | PactBroker::Domain::Version.select(:id).for_selector(selector) end end |
#version_ids_to_delete ⇒ Object
41 42 43 |
# File 'lib/pact_broker/db/clean_incremental.rb', line 41 def version_ids_to_delete db[:versions].where(id: version_ids_to_keep).invert.limit(limit).order(Sequel.asc(:id)) end |
#version_ids_to_keep ⇒ Object
45 46 47 |
# File 'lib/pact_broker/db/clean_incremental.rb', line 45 def version_ids_to_keep @version_ids_to_keep ||= selected_versions_to_keep.reduce(&:union) end |