|
| 1 | +module PactBroker |
| 2 | + module DB |
| 3 | + module DataMigrations |
| 4 | + class SetPacticipantIdsForVerifications |
| 5 | + def self.call connection |
| 6 | + if columns_exist?(connection) |
| 7 | + ids = connection.from(:verifications) |
| 8 | + .select(Sequel[:verifications][:id], Sequel[:pact_versions][:consumer_id], Sequel[:pact_versions][:provider_id]) |
| 9 | + .join(:pact_versions, {id: :provider_version_id}) |
| 10 | + .where(Sequel[:verifications][:consumer_id] => nil) |
| 11 | + .or(Sequel[:verifications][:provider_id] => nil) |
| 12 | + |
| 13 | + ids.each do | id | |
| 14 | + connection.from(:verifications).where(id: id[:id]).update(consumer_id: id[:consumer_id], provider_id: id[:provider_id]) |
| 15 | + end |
| 16 | + end |
| 17 | + end |
| 18 | + |
| 19 | + def self.columns_exist?(connection) |
| 20 | + column_exists?(connection, :verifications, :provider_id) && |
| 21 | + column_exists?(connection, :verifications, :consumer_id) && |
| 22 | + column_exists?(connection, :verifications, :provider_version_id) && |
| 23 | + column_exists?(connection, :pact_versions, :provider_id) && |
| 24 | + column_exists?(connection, :pact_versions, :consumer_id) && |
| 25 | + column_exists?(connection, :pact_versions, :id) |
| 26 | + end |
| 27 | + |
| 28 | + def self.column_exists?(connection, table, column) |
| 29 | + connection.table_exists?(table) && connection.schema(table).find{|col| col.first == column } |
| 30 | + end |
| 31 | + end |
| 32 | + end |
| 33 | + end |
| 34 | +end |
0 commit comments