Class: PactBroker::DB::Clean

Inherits:
Object
  • Object
show all
Defined in:
lib/pact_broker/db/clean.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(database_connection, options = {}) ⇒ Clean

Returns a new instance of Clean.



11
12
13
14
# File 'lib/pact_broker/db/clean.rb', line 11

def initialize database_connection, options = {}
  @db = database_connection
  @options = options
end

Class Method Details

.call(database_connection, options = {}) ⇒ Object



7
8
9
# File 'lib/pact_broker/db/clean.rb', line 7

def self.call database_connection, options = {}
  new(database_connection, options).call
end

Instance Method Details

#callObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/pact_broker/db/clean.rb', line 16

def call
  db[:verifications].where(id: db[:head_matrix].select(:verification_id)).invert.delete
  pp_ids = db[:head_matrix].select(:pact_publication_id)

  triggered_webhook_ids = db[:triggered_webhooks].where(pact_publication_id: pp_ids).invert.select(:id)
  db[:webhook_executions].where(triggered_webhook_id: triggered_webhook_ids).delete
  db[:triggered_webhooks].where(id: triggered_webhook_ids).delete
  db[:webhook_executions].where(pact_publication_id: pp_ids).invert.delete

  db[:pact_publications].where(id: pp_ids).invert.delete

  referenced_pact_version_ids = db[:pact_publications].select(:pact_version_id).collect{ | h| h[:pact_version_id] } +
    db[:verifications].select(:pact_version_id).collect{ | h| h[:pact_version_id] }
  db[:pact_versions].where(id: referenced_pact_version_ids).invert.delete

  referenced_version_ids = db[:pact_publications].select(:consumer_version_id).collect{ | h| h[:consumer_version_id] } +
    db[:verifications].select(:provider_version_id).collect{ | h| h[:provider_version_id] }

  db[:tags].where(version_id: referenced_version_ids).invert.delete
  db[:versions].where(id: referenced_version_ids).invert.delete
end