Skip to content

Commit c4febea

Browse files
committed
feat: optimise latest_pact_consumer_version_orders
1 parent d92cb8f commit c4febea

3 files changed

+27
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
def latest_pact_consumer_version_orders_v1(connection = nil)
2+
"select provider_id, consumer_id, max(consumer_version_order) as latest_consumer_version_order
3+
from all_pact_publications
4+
group by provider_id, consumer_id"
5+
end
6+
7+
def latest_pact_consumer_version_orders_v2(connection = nil)
8+
view = Sequel.as(:latest_pact_publication_ids_for_consumer_versions, :lp)
9+
connection.from(view)
10+
.select_group(:consumer_id, :provider_id)
11+
.select_append{ max(order).as(latest_consumer_version_order) }
12+
.join(:versions, { Sequel[:lp][:consumer_version_id] => Sequel[:cv][:id]}, { table_alias: :cv} )
13+
end

db/migrations/20180722_recreate_views.rb

+1-4
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@
3535
)
3636

3737
create_or_replace_view(:latest_pact_consumer_version_orders,
38-
"select provider_id, consumer_id, max(consumer_version_order) as latest_consumer_version_order
39-
from all_pact_publications
40-
group by provider_id, consumer_id"
41-
)
38+
latest_pact_consumer_version_orders_v1(self))
4239
end
4340
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
require_relative '../ddl_statements'
2+
3+
Sequel.migration do
4+
up do
5+
create_or_replace_view(:latest_pact_consumer_version_orders,
6+
latest_pact_consumer_version_orders_v2(self))
7+
end
8+
9+
down do
10+
create_or_replace_view(:latest_pact_consumer_version_orders,
11+
latest_pact_consumer_version_orders_v1(self))
12+
end
13+
end

0 commit comments

Comments
 (0)