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