Skip to content

Commit c8fa554

Browse files
committed
feat: store latest pact publication ids for each consumer version
1 parent 1db5b7b commit c8fa554

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

lib/pact_broker/pacts/repository.rb

+18-4
Original file line numberDiff line numberDiff line change
@@ -18,28 +18,42 @@ class Repository
1818
include PactBroker::Logging
1919

2020
def create params
21-
PactPublication.new(
21+
pact_publication = PactPublication.new(
2222
consumer_version_id: params[:version_id],
2323
provider_id: params[:provider_id],
2424
pact_version: find_or_create_pact_version(params.fetch(:consumer_id), params.fetch(:provider_id), params[:json_content]),
25-
).save.to_domain
25+
).save
26+
update_latest_pact_publication_ids(pact_publication)
27+
pact_publication.to_domain
2628
end
2729

2830
def update id, params
2931
existing_model = PactPublication.find(id: id)
3032
pact_version = find_or_create_pact_version(existing_model.consumer_version.pacticipant_id, existing_model.provider_id, params[:json_content])
3133
if existing_model.pact_version_id != pact_version.id
32-
PactPublication.new(
34+
pact_publication = PactPublication.new(
3335
consumer_version_id: existing_model.consumer_version_id,
3436
provider_id: existing_model.provider_id,
3537
revision_number: (existing_model.revision_number + 1),
3638
pact_version: pact_version,
37-
).save.to_domain
39+
).save
40+
update_latest_pact_publication_ids(pact_publication)
41+
pact_publication.to_domain
3842
else
3943
existing_model.to_domain
4044
end
4145
end
4246

47+
def update_latest_pact_publication_ids(pact_publication)
48+
table = AllPactPublications.db[:latest_pact_publication_ids_by_consumer_versions]
49+
count = table.where(consumer_version_id: pact_publication.consumer_version_id, provider_id: pact_publication.provider_id).count
50+
if count == 0
51+
table.insert(consumer_version_id: pact_publication.consumer_version_id, provider_id: pact_publication.provider_id, pact_publication_id: pact_publication.id)
52+
else
53+
table.where(consumer_version_id: pact_publication.consumer_version_id, provider_id: pact_publication.provider_id).update(pact_publication_id: pact_publication.id)
54+
end
55+
end
56+
4357
def delete params
4458
id = AllPactPublications
4559
.consumer(params.consumer_name)

0 commit comments

Comments
 (0)