Skip to content

Commit d239bfd

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

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
@@ -20,28 +20,42 @@ class Repository
2020
include PactBroker::Repositories
2121

2222
def create params
23-
PactPublication.new(
23+
pact_publication = PactPublication.new(
2424
consumer_version_id: params[:version_id],
2525
provider_id: params[:provider_id],
2626
pact_version: find_or_create_pact_version(params.fetch(:consumer_id), params.fetch(:provider_id), params[:json_content]),
27-
).save.to_domain
27+
).save
28+
update_latest_pact_publication_ids(pact_publication)
29+
pact_publication.to_domain
2830
end
2931

3032
def update id, params
3133
existing_model = PactPublication.find(id: id)
3234
pact_version = find_or_create_pact_version(existing_model.consumer_version.pacticipant_id, existing_model.provider_id, params[:json_content])
3335
if existing_model.pact_version_id != pact_version.id
34-
PactPublication.new(
36+
pact_publication = PactPublication.new(
3537
consumer_version_id: existing_model.consumer_version_id,
3638
provider_id: existing_model.provider_id,
3739
revision_number: (existing_model.revision_number + 1),
3840
pact_version: pact_version,
39-
).save.to_domain
41+
).save
42+
update_latest_pact_publication_ids(pact_publication)
43+
pact_publication.to_domain
4044
else
4145
existing_model.to_domain
4246
end
4347
end
4448

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

0 commit comments

Comments
 (0)