module PactBroker::Pacts::PactPublicationDatasetModule
rubocop: disable Metrics/ModuleLength
Public Instance Methods
consumer_name_like(name)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 350 def consumer_name_like(name) where(name_like(Sequel[:consumers][:name], name)) end
consumer_version_number_like(number)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 354 def consumer_version_number_like(number) where(name_like(Sequel[:cv][:number], number)) end
consumer_version_order_after(order)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 366 def consumer_version_order_after order where(Sequel.lit("consumer_version_order > ?", order)) end
consumer_version_order_before(order)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 362 def consumer_version_order_before order where(Sequel.lit("consumer_version_order < ?", order)) end
consumer_version_tag(tag)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 358 def consumer_version_tag(tag) where(name_like(Sequel[:ct][:name],tag)) end
created_after(date)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 256 def created_after date where(Sequel.lit("#{first_source_alias}.created_at > ?", date)) end
delete()
click to toggle source
Calls superclass method
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 398 def delete require "pact_broker/webhooks/triggered_webhook" PactBroker::Webhooks::TriggeredWebhook.where(pact_publication: self).delete super end
eager_load_pact_versions()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 323 def eager_load_pact_versions eager(:pact_versions) end
earliest()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 382 def earliest order(:consumer_version_order).limit(1) end
for_branch_name(branch_name)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 332 def for_branch_name branch_name branch_versions_join = { Sequel[:branch_versions][:version_id] => Sequel[:pact_publications][:consumer_version_id], Sequel[:branch_versions][:branch_name] => branch_name } base_query = self if no_columns_selected? base_query = base_query.select_all_qualified.select_append(Sequel[:branch_versions][:branch_name].as(:branch_name)) end base_query.join(:branch_versions, branch_versions_join) end
for_consumer(consumer)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 26 def for_consumer consumer where(consumer: consumer) end
for_consumer_id_and_provider_id(consumer_id, provider_id)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 10 def for_consumer_id_and_provider_id(consumer_id, provider_id) where(Sequel[:pact_publications][:consumer_id] => consumer_id, Sequel[:pact_publications][:provider_id] => provider_id) end
for_consumer_name(consumer_name)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 18 def for_consumer_name(consumer_name) where(consumer: PactBroker::Domain::Pacticipant.find_by_name(consumer_name)) end
for_consumer_name_and_maybe_version_number(consumer_name, consumer_version_number)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 52 def for_consumer_name_and_maybe_version_number(consumer_name, consumer_version_number) if consumer_version_number where(consumer_version: PactBroker::Domain::Version.where_pacticipant_name_and_version_number(consumer_name, consumer_version_number)) else where(consumer: PactBroker::Domain::Pacticipant.find_by_name(consumer_name)) end end
for_consumer_version_tag(tag_name)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 35 def for_consumer_version_tag tag_name base_query = self if no_columns_selected? base_query = base_query.select_all_qualified.select_append(Sequel[:tags][:name].as(:tag_name)) end base_query .join(:tags, { version_id: :consumer_version_id, Sequel[:tags][:name] => tag_name }) .remove_overridden_revisions_from_complete_query end
for_consumer_version_tag_all_revisions(tag_name)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 46 def for_consumer_version_tag_all_revisions tag_name join(:tags, { version_id: :consumer_version_id }) do name_like(Sequel[:tags][:name], tag_name) end end
for_latest_consumer_versions_with_tag(tag_name)
click to toggle source
The pacts for the latest versions with the specified tag (new logic) NOT the latest pact that belongs to a version with the specified tag.
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 206 def for_latest_consumer_versions_with_tag(tag_name) if PactBroker.feature_enabled?(:fix_issue_494) head_tags = PactBroker::Domain::Tag .select_group(:pacticipant_id, :name) .select_append{ max(version_order).as(:latest_version_order) } .where(name: tag_name) head_tags_join = { Sequel[:pact_publications][:consumer_id] => Sequel[:head_tags][:pacticipant_id], Sequel[:pact_publications][:consumer_version_order] => Sequel[:head_tags][:latest_version_order] } base_query = self if no_columns_selected? base_query = base_query.select_all_qualified.select_append(Sequel[:head_tags][:name].as(:tag_name)) end base_query .join(head_tags, head_tags_join, { table_alias: :head_tags }) .remove_overridden_revisions_from_complete_query else latest_for_consumer_tag(tag_name) end end
for_pact_version_id(pact_version_id)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 272 def for_pact_version_id(pact_version_id) where(Sequel[:pact_publications][:pact_version_id] => pact_version_id) end
for_pact_version_sha(pact_version_sha)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 318 def for_pact_version_sha(pact_version_sha) join_pact_versions .where(Sequel[:pact_versions][:sha] => pact_version_sha) end
for_provider(provider)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 22 def for_provider provider where(provider: provider) end
for_provider_name(provider_name)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 14 def for_provider_name(provider_name) where(provider: PactBroker::Domain::Pacticipant.find_by_name(provider_name)) end
in_environments()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 231 def in_environments currently_deployed_join = { Sequel[:pact_publications][:consumer_version_id] => Sequel[:currently_deployed_version_ids][:version_id] } released_join = { Sequel[:pact_publications][:consumer_version_id] => Sequel[:released_versions][:version_id], Sequel[:released_versions][:support_ended_at] => nil } base_query = self if no_columns_selected? base_query = base_query.select_all_qualified end deployed = base_query.join(:currently_deployed_version_ids, currently_deployed_join) released = base_query.join(:released_versions, released_join) deployed.union(released).remove_overridden_revisions_from_complete_query end
join_consumer_branch_versions()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 287 def join_consumer_branch_versions join(:branch_versions, { Sequel[:pact_publications][:consumer_version_id] => Sequel[:branch_versions][:version_id] }) end
join_consumer_versions(table_alias = :cv, extra_join_criteria = {}, &block)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 276 def join_consumer_versions(table_alias = :cv, extra_join_criteria = {}, &block) versions_join = { Sequel[:pact_publications][:consumer_version_id] => Sequel[table_alias][:id] }.merge(extra_join_criteria) join(:versions, versions_join, { table_alias: table_alias }, &block) end
join_consumers(table_alias = :consumers, base_table = :pact_publications, extra_join_criteria = {})
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 307 def join_consumers(table_alias = :consumers, base_table = :pact_publications, extra_join_criteria = {}) consumer_join = { Sequel[base_table][:consumer_id] => Sequel[table_alias][:id] }.merge(extra_join_criteria) join(:pacticipants, consumer_join, { table_alias: table_alias }) end
join_pact_versions()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 314 def join_pact_versions join(:pact_versions, { Sequel[:pact_publications][:pact_version_id] => Sequel[:pact_versions][:id] }) end
join_providers(table_alias = :providers, base_table = :pact_publications, extra_join_criteria = {})
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 300 def join_providers(table_alias = :providers, base_table = :pact_publications, extra_join_criteria = {}) provider_join = { Sequel[base_table][:provider_id] => Sequel[table_alias][:id] }.merge(extra_join_criteria) join(:pacticipants, provider_join, { table_alias: table_alias }) end
latest()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 386 def latest order(:consumer_version_order, :revision_number).last end
latest_by_consumer_branch()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 60 def latest_by_consumer_branch branch_versions_join = { Sequel[:pact_publications][:consumer_version_id] => Sequel[:branch_versions][:version_id] } branches_join = { Sequel[:branch_versions][:branch_id] => Sequel[:branches][:id] } max_orders = join(:branch_versions, branch_versions_join) .join(:branches, branches_join) .select_group(Sequel[:pact_publications][:consumer_id], Sequel[:pact_publications][:provider_id], Sequel[:branches][:name].as(:branch_name)) .select_append{ max(consumer_version_order).as(latest_consumer_version_order) } max_join = { Sequel[:max_orders][:consumer_id] => Sequel[:pact_publications][:consumer_id], Sequel[:max_orders][:provider_id] => Sequel[:pact_publications][:provider_id], Sequel[:max_orders][:latest_consumer_version_order] => Sequel[:pact_publications][:consumer_version_order] } base_query = self if no_columns_selected? base_query = base_query.select_all_qualified.select_append(Sequel[:max_orders][:branch_name].as(:branch_name)) end base_query .remove_overridden_revisions .join(max_orders, max_join, { table_alias: :max_orders }) end
latest_by_consumer_tag()
click to toggle source
The latest pact publication for each tag
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 143 def latest_by_consumer_tag tags_join = { Sequel[:pact_publications][:consumer_version_id] => Sequel[:tags][:version_id] } base_query = join(:tags, tags_join) if no_columns_selected? base_query = base_query.select_all_qualified.select_append(Sequel[:tags][:name].as(:tag_name)) end joined_query = base_query.select( Sequel[:pact_publications][:consumer_id], Sequel[:tags][:version_order], Sequel[:tags][:name].as(:tag_name) ) self_join = { Sequel[:pact_publications][:consumer_id] => Sequel[:pp2][:consumer_id], Sequel[:tags][:name] => Sequel[:pp2][:tag_name] } base_query.left_join(joined_query, self_join, { table_alias: :pp2 } ) do Sequel[:pp2][:version_order] > Sequel[:tags][:version_order] end .where(Sequel[:pp2][:version_order] => nil) .remove_overridden_revisions_from_complete_query end
latest_by_consumer_version_order()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 370 def latest_by_consumer_version_order reverse_order(:consumer_version_order).limit(1) end
latest_for_consumer_branch(branch_name)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 112 def latest_for_consumer_branch(branch_name) branch_versions_join = { Sequel[:pact_publications][:consumer_version_id] => Sequel[:branch_versions][:version_id] } branches_join = { Sequel[:branch_versions][:branch_id] => Sequel[:branches][:id], Sequel[:branches][:name] => branch_name } max_orders = join(:branch_versions, branch_versions_join) .join(:branches, branches_join) .select_group(:consumer_id, :provider_id, Sequel[:branches][:name].as(:branch_name)) .select_append{ max(consumer_version_order).as(latest_consumer_version_order) } max_join = { Sequel[:max_orders][:consumer_id] => Sequel[:pact_publications][:consumer_id], Sequel[:max_orders][:provider_id] => Sequel[:pact_publications][:provider_id], Sequel[:max_orders][:latest_consumer_version_order] => Sequel[:pact_publications][:consumer_version_order] } base_query = self if no_columns_selected? base_query = base_query.select_all_qualified.select_append(Sequel[:max_orders][:branch_name].as(:branch_name)) end base_query .join(max_orders, max_join, { table_alias: :max_orders }) .remove_overridden_revisions_from_complete_query end
latest_for_consumer_tag(tag_name)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 171 def latest_for_consumer_tag(tag_name) tags_join = { Sequel[:pact_publications][:consumer_version_id] => Sequel[:tags][:version_id], Sequel[:tags][:name] => tag_name } base_query = self if no_columns_selected? base_query = base_query.select_all_qualified.select_append(Sequel[:tags][:name].as(:tag_name)) end base_query = base_query .join(:tags, tags_join) .where(Sequel[:tags][:name] => tag_name) joined_query = base_query.select( Sequel[:pact_publications][:consumer_id], Sequel[:tags][:name].as(:tag_name), Sequel[:tags][:version_order] ) self_join = { Sequel[:pact_publications][:consumer_id] => Sequel[:pp2][:consumer_id], Sequel[:tags][:name] => Sequel[:pp2][:tag_name] } base_query.left_join(joined_query, self_join, { table_alias: :pp2 } ) do Sequel[:pp2][:version_order] > Sequel[:tags][:version_order] end .where(Sequel[:pp2][:version_order] => nil) .remove_overridden_revisions_from_complete_query end
order_by_consumer_name()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 374 def order_by_consumer_name order_append_ignore_case(Sequel[:consumers][:name]) end
order_by_consumer_version_order()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 378 def order_by_consumer_version_order order_append(:consumer_version_order, :revision_number) end
overall_latest()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 90 def overall_latest self_join = { Sequel[:pact_publications][:consumer_id] => Sequel[:pp2][:consumer_id], Sequel[:pact_publications][:provider_id] => Sequel[:pp2][:provider_id] } base_query = self base_query = base_query.select_all_qualified if no_columns_selected? base_query.left_join(base_query.select(:consumer_id, :provider_id, :consumer_version_order), self_join, { table_alias: :pp2 } ) do Sequel[:pp2][:consumer_version_order] > Sequel[:pact_publications][:consumer_version_order] end .where(Sequel[:pp2][:consumer_version_order] => nil) .remove_overridden_revisions_from_complete_query end
overall_latest_for_consumer_id_and_provider_id(consumer_id, provider_id)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 106 def overall_latest_for_consumer_id_and_provider_id(consumer_id, provider_id) for_consumer_id_and_provider_id(consumer_id, provider_id) .order(Sequel.desc(Sequel[:pact_publications][:consumer_version_order]), Sequel.desc(:revision_number)) .limit(1) end
provider_name_like(name)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 346 def provider_name_like(name) where(name_like(Sequel[:providers][:name], name)) end
remove_overridden_revisions(pact_publications_alias = :pact_publications)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 260 def remove_overridden_revisions(pact_publications_alias = :pact_publications) base = self base = base.select_all_qualified if no_columns_selected? base.join(:latest_pact_publication_ids_for_consumer_versions, { Sequel[:lp][:pact_publication_id] => Sequel[pact_publications_alias][:id] }, { table_alias: :lp}) end
remove_overridden_revisions_from_complete_query()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 266 def remove_overridden_revisions_from_complete_query from_self(alias: :pact_publications) .select(Sequel[:pact_publications].*) .remove_overridden_revisions(:pact_publications) end
tag(tag_name)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 327 def tag tag_name filter = name_like(Sequel.qualify(:tags, :name), tag_name) join(:tags, {version_id: :consumer_version_id}).where(filter) end
untagged()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 30 def untagged left_outer_join(:tags, { version_id: :consumer_version_id }) .where(Sequel.qualify(:tags, :name) => nil) end
verified_before_date(date)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 252 def verified_before_date(date) where { Sequel[:verifications][:execution_date] < date } end
where_consumer_if_set(consumer)
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 390 def where_consumer_if_set(consumer) if consumer where(consumer: consumer) else self end end
Private Instance Methods
no_columns_selected?()
click to toggle source
# File lib/pact_broker/pacts/pact_publication_dataset_module.rb, line 406 def no_columns_selected? opts[:select].nil? end