Sha256: 20aedfda85ffb89f1c2c702d131eab816800344a6033df326e7d0be4da491ff7

Contents?: true

Size: 1.59 KB

Versions: 43

Compression:

Stored size: 1.59 KB

Contents

require "pact_broker/pacts/content"

module PactBroker
  module DB
    module DataMigrations
      class SetInteractionsCounts
        def self.call(connection)
          self_join = {
            Sequel[:pact_publications][:consumer_id] => Sequel[:pp2][:consumer_id],
            Sequel[:pact_publications][:provider_id] => Sequel[:pp2][:provider_id]
          }

          pact_versions_join = {
            Sequel[:pact_versions][:id] => Sequel[:pact_publications][:pact_version_id],
            Sequel[:pact_versions][:interactions_count] => nil,
            Sequel[:pact_versions][:messages_count] => nil
          }

          base_query = connection[:pact_publications]
          base_query = base_query.select(Sequel[:pact_versions][:id], Sequel[:pact_versions][:content])

          latest_pact_publications_query = base_query.left_join(base_query.select(:consumer_id, :provider_id, :consumer_version_order), self_join, { table_alias: :pp2 } ) do
            Sequel[:pp2][:consumer_version_order] > Sequel[:pact_publications][:consumer_version_order]
          end
          .join(:pact_versions, pact_versions_join)
          .where(Sequel[:pp2][:consumer_version_order] => nil)

          latest_pact_publications_query.each do | row |
            content = PactBroker::Pacts::Content.from_json(row[:content])
            connection.from(:pact_versions)
              .where(id: row[:id])
              .update(
                messages_count: content.messages&.count || 0,
                interactions_count: content.interactions&.count || 0
              )
          end
        end
      end
    end
  end
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
pact_broker-2.112.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.111.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.109.1 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.109.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.108.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.107.1 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.107.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.107.0.beta.1 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.106.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.105.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.104.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.103.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.102.2 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.102.1 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.102.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.101.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.100.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.99.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.98.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb
pact_broker-2.97.0 lib/pact_broker/db/data_migrations/set_interactions_counts.rb