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_main_branches ⇒ 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
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/pact_broker/pacts/pact_publication_selector_dataset_module.rb', line 55 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
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/pact_broker/pacts/pact_publication_selector_dataset_module.rb', line 78 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
98 99 100 |
# File 'lib/pact_broker/pacts/pact_publication_selector_dataset_module.rb', line 98 def for_environment(environment_name) for_currently_deployed_versions(environment_name).union(for_currently_supported_versions(environment_name)) end |
#for_main_branches ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/pact_broker/pacts/pact_publication_selector_dataset_module.rb', line 47 def for_main_branches consumers_join = { Sequel[:pact_publications][:consumer_id] => Sequel[:consumers][:id] } query = self query .join(:pacticipants, consumers_join, { table_alias: :consumers }) .remove_overridden_revisions_from_complete_query 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 |