Sha256: ebbd8568ee3d667d21605024a6b9862e3ed1e7477542d059cae1e69a3ec85c11

Contents?: true

Size: 1.62 KB

Versions: 21

Compression:

Stored size: 1.62 KB

Contents

require 'sequel'
require 'pact_broker/project_root'

module PactBroker
  module DB
    class Clean
      def self.call database_connection, options = {}
        new(database_connection, options).call
      end

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

      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

      private

      attr_reader :db

    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
pact_broker-2.38.1 lib/pact_broker/db/clean.rb
pact_broker-2.38.0 lib/pact_broker/db/clean.rb
pact_broker-2.37.0 lib/pact_broker/db/clean.rb
pact_broker-2.36.1 lib/pact_broker/db/clean.rb
pact_broker-2.36.0 lib/pact_broker/db/clean.rb
pact_broker-2.35.0 lib/pact_broker/db/clean.rb
pact_broker-2.34.0 lib/pact_broker/db/clean.rb
pact_broker-2.33.0 lib/pact_broker/db/clean.rb
pact_broker-2.32.0 lib/pact_broker/db/clean.rb
pact_broker-2.31.0 lib/pact_broker/db/clean.rb
pact_broker-2.30.0 lib/pact_broker/db/clean.rb
pact_broker-2.29.0 lib/pact_broker/db/clean.rb
pact_broker-2.27.6 lib/pact_broker/db/clean.rb
pact_broker-2.27.5 lib/pact_broker/db/clean.rb
pact_broker-2.27.4 lib/pact_broker/db/clean.rb
pact_broker-2.27.3 lib/pact_broker/db/clean.rb
pact_broker-2.27.2 lib/pact_broker/db/clean.rb
pact_broker-2.27.0 lib/pact_broker/db/clean.rb
pact_broker-2.26.1 lib/pact_broker/db/clean.rb
pact_broker-2.26.0 lib/pact_broker/db/clean.rb