Class: PactBroker::DB::DataMigrations::SetInteractionsCounts
- Inherits:
-
Object
- Object
- PactBroker::DB::DataMigrations::SetInteractionsCounts
- Defined in:
- lib/pact_broker/db/data_migrations/set_interactions_counts.rb
Class Method Summary collapse
-
.call(connection) ⇒ Object
This was never included in PactBroker::DB::MigrateData::MIGRATIONS.
Class Method Details
.call(connection) ⇒ Object
This was never included in PactBroker::DB::MigrateData::MIGRATIONS
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/pact_broker/db/data_migrations/set_interactions_counts.rb', line 9 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.&.count || 0, interactions_count: content.interactions&.count || 0 ) end end |