pact_broker 2.24.0 → 2.25.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -0
  3. data/CONTRIBUTING.md +2 -2
  4. data/DEVELOPER_DOCUMENTATION.md +31 -27
  5. data/DEVELOPER_SETUP.md +3 -2
  6. data/config/database.yml +10 -0
  7. data/db/ddl_statements.rb +3 -0
  8. data/db/ddl_statements/head_matrix_v001.rb +31 -0
  9. data/db/ddl_statements/head_matrix_v002.rb +31 -0
  10. data/db/ddl_statements/latest_verification_ids_for_pact_versions_v001.rb +4 -0
  11. data/db/migrations/000028_create_all_pact_publications.rb +4 -1
  12. data/db/migrations/20180311_optimise_head_matrix.rb +5 -34
  13. data/db/migrations/20180523_create_latest_verifications_for_consumer_version_tags.rb +2 -0
  14. data/db/migrations/20180612_add_pacticipant_ids_to_verifications.rb +17 -0
  15. data/db/migrations/20180613_migrate_pacticipant_ids_for_verifications.rb +7 -0
  16. data/db/migrations/20180614_update_latest_verification_ids_for_consumer_and_provider.rb +27 -0
  17. data/db/migrations/20180615_add_consumer_id_to_pact_publications.rb +13 -0
  18. data/db/migrations/20180616_migrate_consumer_ids_for_pact_publications.rb +11 -0
  19. data/db/migrations/20180720_create_latest_pact_publication_ids.rb +25 -0
  20. data/db/migrations/20180721_migrate_latest_pact_publication_ids.rb +11 -0
  21. data/db/migrations/20180722_recreate_views.rb +43 -0
  22. data/db/migrations/20180723_create_latest_verification_ids.rb +23 -0
  23. data/db/migrations/20180724_migrate_latest_verification_ids.rb +18 -0
  24. data/db/migrations/20180726_recreate_views.rb +29 -0
  25. data/db/migrations/20180727_recreate_latest_verification_ids_for_consumer_version_tags.rb +34 -0
  26. data/db/migrations/20180728_truncate_materialized_matrix_tables.rb +20 -0
  27. data/db/migrations/20180729_create_latest_verification_ids_for_provider_versions.rb +8 -0
  28. data/db/migrations/20180730_create_latest_verifications_for_provider_versions.rb +33 -0
  29. data/db/migrations/20180731_update_head_matrix.rb +11 -0
  30. data/db/pact_broker_database.sqlite3 +0 -0
  31. data/lib/pact_broker/api.rb +3 -3
  32. data/lib/pact_broker/api/decorators/dashboard_text_decorator.rb +2 -2
  33. data/lib/pact_broker/api/pact_broker_urls.rb +1 -1
  34. data/lib/pact_broker/api/resources/base_resource.rb +0 -7
  35. data/lib/pact_broker/api/resources/index.rb +11 -9
  36. data/lib/pact_broker/api/resources/pact.rb +1 -3
  37. data/lib/pact_broker/api/resources/pacticipant.rb +1 -3
  38. data/lib/pact_broker/api/resources/tag.rb +1 -4
  39. data/lib/pact_broker/api/resources/verification.rb +2 -0
  40. data/lib/pact_broker/api/resources/version.rb +1 -3
  41. data/lib/pact_broker/app.rb +8 -0
  42. data/lib/pact_broker/certificates/certificate.rb +12 -0
  43. data/lib/pact_broker/config/setting.rb +12 -0
  44. data/lib/pact_broker/configuration.rb +2 -1
  45. data/lib/pact_broker/db.rb +6 -0
  46. data/lib/pact_broker/db/clean.rb +2 -7
  47. data/lib/pact_broker/db/data_migrations/set_consumer_ids_for_pact_publications.rb +29 -0
  48. data/lib/pact_broker/db/data_migrations/set_pacticipant_ids_for_verifications.rb +35 -0
  49. data/lib/pact_broker/db/migrate_data.rb +14 -0
  50. data/lib/pact_broker/doc/views/wip-provider-pacts.markdown +3 -0
  51. data/lib/pact_broker/domain/label.rb +12 -0
  52. data/lib/pact_broker/domain/pacticipant.rb +32 -1
  53. data/lib/pact_broker/domain/tag.rb +14 -1
  54. data/lib/pact_broker/domain/verification.rb +29 -0
  55. data/lib/pact_broker/domain/version.rb +25 -1
  56. data/lib/pact_broker/feature_toggle.rb +23 -0
  57. data/lib/pact_broker/index/service.rb +1 -0
  58. data/lib/pact_broker/matrix/head_row.rb +25 -20
  59. data/lib/pact_broker/matrix/repository.rb +0 -18
  60. data/lib/pact_broker/matrix/row.rb +24 -27
  61. data/lib/pact_broker/matrix/service.rb +0 -8
  62. data/lib/pact_broker/pacts/all_pact_publications.rb +15 -0
  63. data/lib/pact_broker/pacts/latest_pact_publication_id_by_consumer_version.rb +34 -0
  64. data/lib/pact_broker/pacts/latest_pact_publications.rb +15 -0
  65. data/lib/pact_broker/pacts/latest_pact_publications_by_consumer_version.rb +15 -0
  66. data/lib/pact_broker/pacts/latest_tagged_pact_publications.rb +16 -0
  67. data/lib/pact_broker/pacts/pact_publication.rb +24 -0
  68. data/lib/pact_broker/pacts/pact_version.rb +20 -0
  69. data/lib/pact_broker/pacts/repository.rb +37 -11
  70. data/lib/pact_broker/pacts/service.rb +9 -2
  71. data/lib/pact_broker/repositories/helpers.rb +20 -0
  72. data/lib/pact_broker/tags/tag_with_latest_flag.rb +8 -0
  73. data/lib/pact_broker/ui/view_models/index_item.rb +5 -1
  74. data/lib/pact_broker/ui/views/index/show.haml +1 -1
  75. data/lib/pact_broker/verifications/all_verifications.rb +13 -0
  76. data/lib/pact_broker/verifications/latest_verification_for_consumer_and_provider.rb +18 -0
  77. data/lib/pact_broker/verifications/latest_verification_for_consumer_version_tag.rb +19 -0
  78. data/lib/pact_broker/verifications/latest_verification_for_pact_version.rb +22 -0
  79. data/lib/pact_broker/verifications/latest_verification_id_for_pact_version_and_provider_version.rb +36 -0
  80. data/lib/pact_broker/verifications/repository.rb +23 -5
  81. data/lib/pact_broker/verifications/sequence.rb +4 -0
  82. data/lib/pact_broker/version.rb +1 -1
  83. data/lib/pact_broker/webhooks/execution.rb +16 -0
  84. data/lib/pact_broker/webhooks/latest_triggered_webhook.rb +14 -0
  85. data/lib/pact_broker/webhooks/triggered_webhook.rb +27 -0
  86. data/lib/pact_broker/webhooks/webhook.rb +26 -0
  87. data/lib/pact_broker/webhooks/webhook_event.rb +13 -0
  88. data/pact_broker.gemspec +1 -0
  89. data/script/recreate-docker-pg-db.sh +20 -0
  90. data/script/recreate-mysql-db.sh +1 -0
  91. data/spec/integration/webhooks/certificate_spec.rb +1 -1
  92. data/spec/lib/pact_broker/db/clean_spec.rb +1 -1
  93. data/spec/lib/pact_broker/db/data_migrations/set_consumer_ids_for_pact_publications_spec.rb +40 -0
  94. data/spec/lib/pact_broker/feature_toggle_spec.rb +74 -0
  95. data/spec/lib/pact_broker/matrix/head_row_spec.rb +0 -44
  96. data/spec/lib/pact_broker/matrix/repository_spec.rb +0 -20
  97. data/spec/lib/pact_broker/matrix/row_spec.rb +0 -56
  98. data/spec/lib/pact_broker/pacts/repository_spec.rb +61 -9
  99. data/spec/lib/pact_broker/pacts/service_spec.rb +65 -17
  100. data/spec/lib/pact_broker/ui/view_models/index_item_spec.rb +3 -2
  101. data/spec/migrations/44_add_provider_version_to_verification_spec.rb +0 -1
  102. data/spec/service_consumers/provider_states_for_pact_ruby.rb +14 -0
  103. data/spec/support/test_data_builder.rb +0 -18
  104. data/tasks/database/annotate.rb +40 -0
  105. data/tasks/db.rake +12 -0
  106. metadata +50 -3
  107. data/lib/pact_broker/verifications/latest_verifications_by_consumer_version.rb +0 -15
@@ -10,14 +10,6 @@ module PactBroker
10
10
  extend PactBroker::Repositories
11
11
  extend PactBroker::Services
12
12
 
13
- def refresh params, &block
14
- matrix_repository.refresh(params, &block)
15
- end
16
-
17
- def refresh_tags params, &block
18
- matrix_repository.refresh_tags(params, &block)
19
- end
20
-
21
13
  def find selectors, options = {}
22
14
  query_results = matrix_repository.find selectors, options
23
15
  pacticipant_names = selectors.collect{ | s| s[:pacticipant_name] }
@@ -120,3 +120,18 @@ module PactBroker
120
120
 
121
121
  end
122
122
  end
123
+
124
+ # Table: all_pact_publications
125
+ # Columns:
126
+ # id | integer |
127
+ # consumer_id | integer |
128
+ # consumer_name | text |
129
+ # consumer_version_id | integer |
130
+ # consumer_version_number | text |
131
+ # consumer_version_order | integer |
132
+ # provider_id | integer |
133
+ # provider_name | text |
134
+ # revision_number | integer |
135
+ # pact_version_id | integer |
136
+ # pact_version_sha | text |
137
+ # created_at | timestamp without time zone |
@@ -0,0 +1,34 @@
1
+ require 'pact_broker/pacts/all_pact_publications'
2
+ require 'pact_broker/repositories/helpers'
3
+
4
+ module PactBroker
5
+ module Pacts
6
+ class LatestPactPublicationIdForConsumerVersion < Sequel::Model(:latest_pact_publication_ids_for_consumer_versions)
7
+
8
+ unrestrict_primary_key
9
+
10
+ dataset_module do
11
+ include PactBroker::Repositories::Helpers
12
+ end
13
+
14
+ def upsert
15
+ self.class.upsert(to_hash, [:provider_id, :consumer_version_id])
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ # Table: latest_pact_publications_by_consumer_versions
22
+ # Columns:
23
+ # id | integer |
24
+ # consumer_id | integer |
25
+ # consumer_name | text |
26
+ # consumer_version_id | integer |
27
+ # consumer_version_number | text |
28
+ # consumer_version_order | integer |
29
+ # provider_id | integer |
30
+ # provider_name | text |
31
+ # revision_number | integer |
32
+ # pact_version_id | integer |
33
+ # pact_version_sha | text |
34
+ # created_at | timestamp without time zone |
@@ -9,3 +9,18 @@ module PactBroker
9
9
 
10
10
  end
11
11
  end
12
+
13
+ # Table: latest_pact_publications
14
+ # Columns:
15
+ # id | integer |
16
+ # consumer_id | integer |
17
+ # consumer_name | text |
18
+ # consumer_version_id | integer |
19
+ # consumer_version_number | text |
20
+ # consumer_version_order | integer |
21
+ # provider_id | integer |
22
+ # provider_name | text |
23
+ # revision_number | integer |
24
+ # pact_version_id | integer |
25
+ # pact_version_sha | text |
26
+ # created_at | timestamp without time zone |
@@ -9,3 +9,18 @@ module PactBroker
9
9
 
10
10
  end
11
11
  end
12
+
13
+ # Table: latest_pact_publications_by_consumer_versions
14
+ # Columns:
15
+ # id | integer |
16
+ # consumer_id | integer |
17
+ # consumer_name | text |
18
+ # consumer_version_id | integer |
19
+ # consumer_version_number | text |
20
+ # consumer_version_order | integer |
21
+ # provider_id | integer |
22
+ # provider_name | text |
23
+ # revision_number | integer |
24
+ # pact_version_id | integer |
25
+ # pact_version_sha | text |
26
+ # created_at | timestamp without time zone |
@@ -9,3 +9,19 @@ module PactBroker
9
9
 
10
10
  end
11
11
  end
12
+
13
+ # Table: latest_tagged_pact_publications
14
+ # Columns:
15
+ # id | integer |
16
+ # consumer_id | integer |
17
+ # consumer_name | text |
18
+ # consumer_version_id | integer |
19
+ # consumer_version_number | text |
20
+ # consumer_version_order | integer |
21
+ # provider_id | integer |
22
+ # provider_name | text |
23
+ # revision_number | integer |
24
+ # pact_version_id | integer |
25
+ # pact_version_sha | text |
26
+ # created_at | timestamp without time zone |
27
+ # tag_name | text |
@@ -61,3 +61,27 @@ module PactBroker
61
61
  PactPublication.plugin :timestamps, update_on_create: true
62
62
  end
63
63
  end
64
+
65
+ # Table: pact_publications
66
+ # Columns:
67
+ # id | integer | PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY
68
+ # consumer_version_id | integer | NOT NULL
69
+ # provider_id | integer | NOT NULL
70
+ # revision_number | integer | NOT NULL
71
+ # pact_version_id | integer | NOT NULL
72
+ # created_at | timestamp without time zone | NOT NULL
73
+ # consumer_id | integer |
74
+ # Indexes:
75
+ # pact_publications_pkey | PRIMARY KEY btree (id)
76
+ # cv_prov_revision_unq | UNIQUE btree (consumer_version_id, provider_id, revision_number)
77
+ # cv_prov_id_ndx | btree (consumer_version_id, provider_id, id)
78
+ # pact_publications_consumer_id_index | btree (consumer_id)
79
+ # Foreign key constraints:
80
+ # pact_publications_consumer_id_fkey | (consumer_id) REFERENCES pacticipants(id)
81
+ # pact_publications_consumer_version_id_fkey | (consumer_version_id) REFERENCES versions(id)
82
+ # pact_publications_pact_version_id_fkey | (pact_version_id) REFERENCES pact_versions(id)
83
+ # pact_publications_provider_id_fkey | (provider_id) REFERENCES pacticipants(id)
84
+ # Referenced By:
85
+ # webhook_executions | webhook_executions_pact_publication_id_fkey | (pact_publication_id) REFERENCES pact_publications(id)
86
+ # triggered_webhooks | triggered_webhooks_pact_publication_id_fkey | (pact_publication_id) REFERENCES pact_publications(id)
87
+ # latest_pact_publication_ids_for_consumer_versions | latest_pact_publication_ids_for_consum_pact_publication_id_fkey | (pact_publication_id) REFERENCES pact_publications(id) ON DELETE CASCADE
@@ -48,3 +48,23 @@ module PactBroker
48
48
  PactVersion.plugin :timestamps
49
49
  end
50
50
  end
51
+
52
+ # Table: pact_versions
53
+ # Columns:
54
+ # id | integer | PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY
55
+ # consumer_id | integer | NOT NULL
56
+ # provider_id | integer | NOT NULL
57
+ # sha | text | NOT NULL
58
+ # content | text |
59
+ # created_at | timestamp without time zone | NOT NULL
60
+ # Indexes:
61
+ # pact_versions_pkey | PRIMARY KEY btree (id)
62
+ # unq_pvc_con_prov_sha | UNIQUE btree (consumer_id, provider_id, sha)
63
+ # Foreign key constraints:
64
+ # pact_versions_consumer_id_fkey | (consumer_id) REFERENCES pacticipants(id)
65
+ # pact_versions_provider_id_fkey | (provider_id) REFERENCES pacticipants(id)
66
+ # Referenced By:
67
+ # pact_publications | pact_publications_pact_version_id_fkey | (pact_version_id) REFERENCES pact_versions(id)
68
+ # verifications | verifications_pact_version_id_fkey | (pact_version_id) REFERENCES pact_versions(id)
69
+ # latest_pact_publication_ids_for_consumer_versions | latest_pact_publication_ids_for_consumer_v_pact_version_id_fkey | (pact_version_id) REFERENCES pact_versions(id) ON DELETE CASCADE
70
+ # latest_verification_id_for_pact_version_and_provider_version | latest_v_id_for_pv_and_pv_pact_version_id_fk | (pact_version_id) REFERENCES pact_versions(id) ON DELETE CASCADE
@@ -11,6 +11,7 @@ require 'pact/shared/json_differ'
11
11
  require 'pact_broker/domain'
12
12
  require 'pact_broker/pacts/parse'
13
13
  require 'pact_broker/matrix/head_row'
14
+ require 'pact_broker/pacts/latest_pact_publication_id_by_consumer_version'
14
15
 
15
16
  module PactBroker
16
17
  module Pacts
@@ -20,28 +21,46 @@ module PactBroker
20
21
  include PactBroker::Repositories
21
22
 
22
23
  def create params
23
- PactPublication.new(
24
+ pact_publication = PactPublication.new(
24
25
  consumer_version_id: params[:version_id],
25
26
  provider_id: params[:provider_id],
27
+ consumer_id: params[:consumer_id],
26
28
  pact_version: find_or_create_pact_version(params.fetch(:consumer_id), params.fetch(:provider_id), params[:json_content]),
27
- ).save.to_domain
29
+ ).save
30
+ update_latest_pact_publication_ids(pact_publication)
31
+ pact_publication.to_domain
28
32
  end
29
33
 
30
34
  def update id, params
31
35
  existing_model = PactPublication.find(id: id)
32
36
  pact_version = find_or_create_pact_version(existing_model.consumer_version.pacticipant_id, existing_model.provider_id, params[:json_content])
33
37
  if existing_model.pact_version_id != pact_version.id
34
- PactPublication.new(
38
+ pact_publication = PactPublication.new(
35
39
  consumer_version_id: existing_model.consumer_version_id,
40
+ consumer_id: existing_model.consumer_id,
36
41
  provider_id: existing_model.provider_id,
37
42
  revision_number: (existing_model.revision_number + 1),
38
43
  pact_version: pact_version,
39
- ).save.to_domain
44
+ ).save
45
+ update_latest_pact_publication_ids(pact_publication)
46
+ pact_publication.to_domain
40
47
  else
41
48
  existing_model.to_domain
42
49
  end
43
50
  end
44
51
 
52
+ def update_latest_pact_publication_ids(pact_publication)
53
+ params = {
54
+ consumer_version_id: pact_publication.consumer_version_id,
55
+ provider_id: pact_publication.provider_id,
56
+ pact_publication_id: pact_publication.id,
57
+ consumer_id: pact_publication.consumer_id,
58
+ pact_version_id: pact_publication.pact_version_id
59
+ }
60
+
61
+ LatestPactPublicationIdForConsumerVersion.new(params).upsert
62
+ end
63
+
45
64
  def delete params
46
65
  id = AllPactPublications
47
66
  .consumer(params.consumer_name)
@@ -168,13 +187,20 @@ module PactBroker
168
187
  .order(:consumer_version_order, :revision_number).collect(&:to_domain_with_content)
169
188
  end
170
189
 
171
- def find_previous_pact pact
172
- LatestPactPublicationsByConsumerVersion
173
- .eager(:tags)
174
- .consumer(pact.consumer.name)
175
- .provider(pact.provider.name)
176
- .consumer_version_order_before(pact.consumer_version.order)
177
- .latest.collect(&:to_domain_with_content)[0]
190
+ def find_previous_pact pact, tag = nil
191
+ query = LatestPactPublicationsByConsumerVersion
192
+ .eager(:tags)
193
+ .consumer(pact.consumer.name)
194
+ .provider(pact.provider.name)
195
+
196
+ if tag == :untagged
197
+ query = query.untagged
198
+ elsif tag
199
+ query = query.tag(tag)
200
+ end
201
+
202
+ query.consumer_version_order_before(pact.consumer_version.order)
203
+ .latest.collect(&:to_domain_with_content)[0]
178
204
  end
179
205
 
180
206
  def find_next_pact pact
@@ -104,8 +104,7 @@ module PactBroker
104
104
 
105
105
  # TODO also take into account overridden revisions
106
106
  def pact_is_new_or_pact_has_changed_since_previous_version? pact
107
- previous_pact = pact_repository.find_previous_pact pact
108
- previous_pact.nil? || pact.json_content != previous_pact.json_content
107
+ find_previous_pacts(pact).any? { |previous_pact| previous_pact.nil? || pact.json_content != previous_pact.json_content}
109
108
  end
110
109
 
111
110
  private
@@ -140,6 +139,14 @@ module PactBroker
140
139
  logger.debug "Pact has not changed since previous version, not triggering webhooks"
141
140
  end
142
141
  end
142
+
143
+ def find_previous_pacts pact
144
+ if pact.consumer_version_tag_names.any?
145
+ pact.consumer_version_tag_names.map { |tag| pact_repository.find_previous_pact(pact, tag) }
146
+ else
147
+ [pact_repository.find_previous_pact(pact, :untagged)]
148
+ end
149
+ end
143
150
  end
144
151
  end
145
152
  end
@@ -20,6 +20,10 @@ module PactBroker
20
20
  Sequel::Model.db.adapter_scheme.to_s =~ /mysql/
21
21
  end
22
22
 
23
+ def postgres?
24
+ Sequel::Model.db.adapter_scheme.to_s == "postgres"
25
+ end
26
+
23
27
  def select_all_qualified
24
28
  select(Sequel[model.table_name].*)
25
29
  end
@@ -31,6 +35,22 @@ module PactBroker
31
35
  select(column)
32
36
  end
33
37
  end
38
+
39
+ def upsert row, key_names
40
+ if postgres?
41
+ insert_conflict(update: row, target: key_names).insert(row)
42
+ elsif mysql?
43
+ on_duplicate_key_update.insert(row)
44
+ else
45
+ # Sqlite
46
+ key = row.reject{ |k, v| !key_names.include?(k) }
47
+ if where(key).count == 0
48
+ insert(row)
49
+ else
50
+ where(key).update(row)
51
+ end
52
+ end
53
+ end
34
54
  end
35
55
  end
36
56
  end
@@ -16,3 +16,11 @@ module PactBroker
16
16
  end
17
17
  end
18
18
  end
19
+
20
+ # Table: tags_with_latest_flag
21
+ # Columns:
22
+ # name | text |
23
+ # version_id | integer |
24
+ # created_at | timestamp without time zone |
25
+ # updated_at | timestamp without time zone |
26
+ # latest | integer |
@@ -50,10 +50,14 @@ module PactBroker
50
50
  Helpers::URLHelper.group_url provider_name
51
51
  end
52
52
 
53
- def pact_url
53
+ def latest_pact_url
54
54
  "#{pactigration_base_url('', @relationship)}/latest"
55
55
  end
56
56
 
57
+ def pact_url
58
+ PactBroker::Api::PactBrokerUrls.pact_url('', @relationship)
59
+ end
60
+
57
61
  def pact_matrix_url
58
62
  Helpers::URLHelper.matrix_url consumer_name, provider_name
59
63
  end
@@ -44,7 +44,7 @@
44
44
  = index_item.consumer_name
45
45
  %td.pact
46
46
  %span.pact
47
- %a{ href: index_item.pact_url, :title => "View pact" }
47
+ %a{ href: index_item.latest_pact_url, :title => "View pact" }
48
48
  %span.pact-matrix
49
49
  %a{ href: index_item.pact_matrix_url, title: "View pact matrix" }
50
50
  %td.provider
@@ -10,3 +10,16 @@ module PactBroker
10
10
 
11
11
  end
12
12
  end
13
+
14
+ # Table: all_verifications
15
+ # Columns:
16
+ # id | integer |
17
+ # number | integer |
18
+ # success | boolean |
19
+ # provider_version_id | integer |
20
+ # provider_version_number | text |
21
+ # provider_version_order | integer |
22
+ # build_url | text |
23
+ # pact_version_id | integer |
24
+ # execution_date | timestamp without time zone |
25
+ # created_at | timestamp without time zone |
@@ -24,3 +24,21 @@ module PactBroker
24
24
  end
25
25
  end
26
26
  end
27
+
28
+ # Table: latest_verifications_for_consumer_and_provider
29
+ # Columns:
30
+ # consumer_id | integer |
31
+ # provider_id | integer |
32
+ # pact_version_sha | text |
33
+ # provider_version_number | text |
34
+ # provider_version_order | integer |
35
+ # id | integer |
36
+ # number | integer |
37
+ # success | boolean |
38
+ # provider_version | text |
39
+ # build_url | text |
40
+ # pact_version_id | integer |
41
+ # execution_date | timestamp without time zone |
42
+ # created_at | timestamp without time zone |
43
+ # provider_version_id | integer |
44
+ # test_results | text |
@@ -21,3 +21,22 @@ module PactBroker
21
21
  end
22
22
  end
23
23
  end
24
+
25
+ # Table: latest_verifications_for_consumer_version_tags
26
+ # Columns:
27
+ # consumer_id | integer |
28
+ # provider_id | integer |
29
+ # consumer_version_tag_name | text |
30
+ # pact_version_sha | text |
31
+ # provider_version_number | text |
32
+ # provider_version_order | integer |
33
+ # id | integer |
34
+ # number | integer |
35
+ # success | boolean |
36
+ # provider_version | text |
37
+ # build_url | text |
38
+ # pact_version_id | integer |
39
+ # execution_date | timestamp without time zone |
40
+ # created_at | timestamp without time zone |
41
+ # provider_version_id | integer |
42
+ # test_results | text |
@@ -0,0 +1,22 @@
1
+ require 'pact_broker/domain/verification'
2
+
3
+ module PactBroker
4
+ module Verifications
5
+ class LatestVerificationForPactVersion < PactBroker::Domain::Verification
6
+ set_dataset(:latest_verifications_for_pact_versions)
7
+ end
8
+ end
9
+ end
10
+
11
+ # Table: latest_verifications_for_pact_versions
12
+ # Columns:
13
+ # id | integer |
14
+ # number | integer |
15
+ # success | boolean |
16
+ # build_url | text |
17
+ # pact_version_id | integer |
18
+ # execution_date | timestamp without time zone |
19
+ # created_at | timestamp without time zone |
20
+ # provider_version_id | integer |
21
+ # provider_version_number | text |
22
+ # provider_version_order | integer |