@@ -20,28 +20,42 @@ class Repository
20
20
include PactBroker ::Repositories
21
21
22
22
def create params
23
- PactPublication . new (
23
+ pact_publication = PactPublication . new (
24
24
consumer_version_id : params [ :version_id ] ,
25
25
provider_id : params [ :provider_id ] ,
26
26
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
28
30
end
29
31
30
32
def update id , params
31
33
existing_model = PactPublication . find ( id : id )
32
34
pact_version = find_or_create_pact_version ( existing_model . consumer_version . pacticipant_id , existing_model . provider_id , params [ :json_content ] )
33
35
if existing_model . pact_version_id != pact_version . id
34
- PactPublication . new (
36
+ pact_publication = PactPublication . new (
35
37
consumer_version_id : existing_model . consumer_version_id ,
36
38
provider_id : existing_model . provider_id ,
37
39
revision_number : ( existing_model . revision_number + 1 ) ,
38
40
pact_version : pact_version ,
39
- ) . save . to_domain
41
+ ) . save
42
+ update_latest_pact_publication_ids ( pact_publication )
43
+ pact_publication . to_domain
40
44
else
41
45
existing_model . to_domain
42
46
end
43
47
end
44
48
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
+
45
59
def delete params
46
60
id = AllPactPublications
47
61
. consumer ( params . consumer_name )
0 commit comments