Module: PactBroker::Pacts::PactPublicationSelectorDatasetModule
- Included in:
- PactPublicationDatasetModule
- Defined in:
- lib/pact_broker/pacts/pact_publication_selector_dataset_module.rb
Instance Method Summary collapse
- #for_currently_deployed_versions(environment_name) ⇒ Object
- #for_currently_supported_versions(environment_name) ⇒ Object
- #for_environment(environment_name) ⇒ Object
-
#for_provider_and_consumer_version_selector(provider, selector) ⇒ Object
rubocop: disable Metrics/CyclomaticComplexity.
-
#latest_for_main_branches ⇒ Object
Updated logic - the pacts for the latest version of each main branch, not the latest pact that belongs to the main branch.
Instance Method Details
#for_currently_deployed_versions(environment_name) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/pact_broker/pacts/pact_publication_selector_dataset_module.rb', line 47 def for_currently_deployed_versions(environment_name) deployed_versions_join = { Sequel[:pact_publications][:consumer_version_id] => Sequel[:deployed_versions][:version_id] } currently_deployed_versions_join = { Sequel[:deployed_versions][:id] => Sequel[:currently_deployed_version_ids][:deployed_version_id] } environments_join = { Sequel[:deployed_versions][:environment_id] => Sequel[:environments][:id], Sequel[:environments][:name] => environment_name }.compact query = self if no_columns_selected? query = query.select_all_qualified.select_append(Sequel[:environments][:name].as(:environment_name), Sequel[:deployed_versions][:target].as(:target)) end query .join(:deployed_versions, deployed_versions_join) .join(:currently_deployed_version_ids, currently_deployed_versions_join) .join(:environments, environments_join) .remove_overridden_revisions_from_complete_query end |
#for_currently_supported_versions(environment_name) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/pact_broker/pacts/pact_publication_selector_dataset_module.rb', line 70 def for_currently_supported_versions(environment_name) released_versions_join = { Sequel[:pact_publications][:consumer_version_id] => Sequel[:released_versions][:version_id], Sequel[:released_versions][:support_ended_at] => nil } environments_join = { Sequel[:released_versions][:environment_id] => Sequel[:environments][:id], Sequel[:environments][:name] => environment_name }.compact query = self if no_columns_selected? query = query.select_all_qualified.select_append(Sequel[:environments][:name].as(:environment_name), Sequel.lit("NULL").as(:target)) end query .join(:released_versions, released_versions_join) .join(:environments, environments_join) .remove_overridden_revisions_from_complete_query end |
#for_environment(environment_name) ⇒ Object
90 91 92 |
# File 'lib/pact_broker/pacts/pact_publication_selector_dataset_module.rb', line 90 def for_environment(environment_name) for_currently_deployed_versions(environment_name).union(for_currently_supported_versions(environment_name)) end |
#for_provider_and_consumer_version_selector(provider, selector) ⇒ Object
rubocop: disable Metrics/CyclomaticComplexity
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/pact_broker/pacts/pact_publication_selector_dataset_module.rb', line 5 def for_provider_and_consumer_version_selector provider, selector query = for_provider(provider) query = query.for_consumer(PactBroker::Domain::Pacticipant.find_by_name(selector.consumer)) if selector.consumer query = query.for_currently_deployed_versions(selector.environment_name) if selector.currently_deployed? query = query.for_currently_supported_versions(selector.environment_name) if selector.currently_supported? query = query.for_consumer_version_tag(selector.tag) if selector.all_for_tag? if selector.environment_name && !selector.currently_deployed? && !selector.currently_supported? query = query.for_environment(selector.environment_name) end # Do the "latest" logic last so that the provider/consumer criteria get included in the "latest" query before the join, rather than after query = query.latest_for_main_branches if selector.latest_for_main_branch? query = query.for_all_branch_heads if selector.latest_for_each_branch? query = query.latest_for_consumer_branch(selector.branch) if selector.latest_for_branch? query = query.for_latest_consumer_versions_with_tag(selector.tag) if selector.latest_for_tag? query = query.overall_latest if selector.overall_latest? query end |
#latest_for_main_branches ⇒ Object
Updated logic - the pacts for the latest version of each main branch, not the latest pact that belongs to the main branch.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/pact_broker/pacts/pact_publication_selector_dataset_module.rb', line 28 def latest_for_main_branches consumers_join = { Sequel[:pact_publications][:consumer_id] => Sequel[:consumers][:id] } branch_heads_join = { Sequel[:pact_publications][:consumer_version_id] => Sequel[:branch_heads][:version_id], Sequel[:consumers][:main_branch] => Sequel[:branch_heads][:branch_name] } query = self if no_columns_selected? query = query.select_all_qualified.select_append(Sequel[:branch_heads][:branch_name].as(:branch_name)) end query .join(:pacticipants, consumers_join, { table_alias: :consumers }) .join(:branch_heads, branch_heads_join) .remove_overridden_revisions_from_complete_query end |