Skip to content

Commit 9a148b8

Browse files
committed
feat: optimise data migrations that set pacticipant ids
1 parent 7dc93d1 commit 9a148b8

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

lib/pact_broker/db/data_migrations/set_consumer_ids_for_pact_publications.rb

+6-8
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,12 @@ module DataMigrations
44
class SetConsumerIdsForPactPublications
55
def self.call connection
66
if columns_exist?(connection)
7-
ids = connection.from(:pact_publications)
8-
.select(Sequel[:pact_publications][:id], Sequel[:versions][:pacticipant_id].as(:consumer_id))
9-
.join(:versions, {id: :consumer_version_id})
10-
.where(Sequel[:pact_publications][:consumer_id] => nil)
11-
12-
ids.each do | id |
13-
connection.from(:pact_publications).where(id: id[:id]).update(consumer_id: id[:consumer_id])
14-
end
7+
query = "UPDATE pact_publications
8+
SET consumer_id = (SELECT consumer_id
9+
FROM versions
10+
WHERE id = pact_publications.consumer_version_id)
11+
WHERE consumer_id is null"
12+
connection.run(query)
1513
end
1614
end
1715

lib/pact_broker/db/data_migrations/set_pacticipant_ids_for_verifications.rb

+10-9
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@ module DataMigrations
44
class SetPacticipantIdsForVerifications
55
def self.call connection
66
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
7+
query = "UPDATE verifications
8+
SET consumer_id = (SELECT consumer_id
9+
FROM pact_versions
10+
WHERE id = verifications.pact_version_id),
11+
provider_id = (SELECT provider_id
12+
FROM pact_versions
13+
WHERE id = verifications.pact_version_id)
14+
WHERE consumer_id is null
15+
OR provider_id is null"
16+
connection.run(query)
1617
end
1718
end
1819

0 commit comments

Comments
 (0)