Skip to content

Commit 852324a

Browse files
committed
feat(matrix): add matrix view
1 parent 45c9a4c commit 852324a

File tree

3 files changed

+52
-9
lines changed

3 files changed

+52
-9
lines changed

db/migrations/000048_create_matrix.rb

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
Sequel.migration do
2+
up do
3+
p = :latest_pact_publications_by_consumer_versions
4+
create_view(:matrix,
5+
from(p)
6+
.select(
7+
Sequel[p][:consumer_id],
8+
Sequel[p][:consumer_name],
9+
Sequel[p][:consumer_version_id],
10+
Sequel[p][:consumer_version_number],
11+
Sequel[p][:consumer_version_order],
12+
Sequel[p][:id].as(:pact_publication_id),
13+
Sequel[p][:pact_version_id],
14+
Sequel[p][:pact_version_sha],
15+
Sequel[p][:revision_number],
16+
Sequel[p][:created_at].as(:pact_created_at),
17+
Sequel[p][:provider_id],
18+
Sequel[p][:provider_name],
19+
Sequel[:versions][:id].as(:provider_version_id),
20+
Sequel[:versions][:number].as(:provider_version_number),
21+
Sequel[:versions][:order].as(:provider_version_order),
22+
Sequel[:verifications][:success],
23+
Sequel[:verifications][:number],
24+
Sequel[:verifications][:id].as(:verification_id),
25+
Sequel[:verifications][:execution_date].as(:verification_executed_at),
26+
Sequel[:verifications][:build_url].as(:verification_build_url)
27+
)
28+
.left_outer_join(:verifications, { Sequel[:verifications][:pact_version_id] => Sequel[p][:pact_version_id] })
29+
.left_outer_join(:versions, {Sequel[:versions][:id] => Sequel[:verifications][:provider_version_id]})
30+
)
31+
end
32+
33+
down do
34+
drop_view(:matrix)
35+
end
36+
end

lib/pact_broker/matrix/repository.rb

+3-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'pact_broker/repositories/helpers'
2+
require 'pact_broker/matrix/row'
23

34
module PactBroker
45
module Matrix
@@ -67,22 +68,15 @@ def find_compatible_pacticipant_versions selectors
6768
#
6869
def find_all selectors
6970
selectors = look_up_versions_for_tags(selectors)
70-
71-
query = PactBroker::Pacts::LatestPactPublicationsByConsumerVersion
72-
.select_append(:consumer_version_number, :provider_name, :consumer_name, :provider_version_id, :provider_version_number, :success)
73-
.select_append(Sequel[:latest_pact_publications_by_consumer_versions][:created_at].as(:pact_created_at))
74-
.select_append(Sequel[:all_verifications][:number])
75-
.select_append(Sequel[:all_verifications][:id].as(:verification_id))
76-
.select_append(Sequel[:execution_date].as(:verification_executed_at))
77-
.left_outer_join(:all_verifications, pact_version_id: :pact_version_id)
71+
query = Row.select_all
7872

7973
if selectors.size == 1
8074
query = where_consumer_or_provider_is(selectors.first, query)
8175
else
8276
query = where_consumer_and_provider_within(selectors, query)
8377
end
8478

85-
query.order(:execution_date, :verification_id)
79+
query.order(:verification_executed_at, :verification_id)
8680
.collect(&:values)
8781
end
8882

lib/pact_broker/matrix/row.rb

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
require 'pact_broker/repositories/helpers'
2+
3+
module PactBroker
4+
module Matrix
5+
class Row < Sequel::Model
6+
set_dataset(:matrix)
7+
8+
dataset_module do
9+
include PactBroker::Repositories::Helpers
10+
end
11+
end
12+
end
13+
end

0 commit comments

Comments
 (0)