class PactBroker::Matrix::QueryBuilder
Public Class Methods
consumer_in_pacticipant_ids(query_ids)
click to toggle source
# File lib/pact_broker/matrix/query_builder.rb, line 37 def self.consumer_in_pacticipant_ids(query_ids) { consumer_id: query_ids.all_pacticipant_ids } end
consumer_or_consumer_version_matches(query_ids, qualifier)
click to toggle source
# File lib/pact_broker/matrix/query_builder.rb, line 41 def self.consumer_or_consumer_version_matches(query_ids, qualifier) ors = [] ors << { qualify(qualifier, :consumer_version_id) => query_ids.pacticipant_version_ids } if query_ids.pacticipant_version_ids.any? ors << { qualify(qualifier, :consumer_id) => query_ids.pacticipant_ids } if query_ids.pacticipant_ids.any? Sequel.|(*ors) end
consumer_or_consumer_version_or_provider_or_provider_or_provider_version_match(query_ids, pacts_qualifier = :p, verifications_qualifier = :v)
click to toggle source
QueryIds
is built from a single selector, so there is only one pacticipant_id or pacticipant_version_id
# File lib/pact_broker/matrix/query_builder.rb, line 65 def self.consumer_or_consumer_version_or_provider_or_provider_or_provider_version_match(query_ids, pacts_qualifier = :p, verifications_qualifier = :v) ors = if query_ids.pacticipant_version_id [ { Sequel[pacts_qualifier][:consumer_version_id] => query_ids.pacticipant_version_id }, { Sequel[verifications_qualifier][:provider_version_id] => query_ids.pacticipant_version_id } ] else [ { Sequel[pacts_qualifier][:consumer_id] => query_ids.pacticipant_id }, { Sequel[pacts_qualifier][:provider_id] => query_ids.pacticipant_id } ] end Sequel.|(*ors) end
either_consumer_or_provider_was_specified_in_query(query_ids, qualifier = nil)
click to toggle source
Some selecters are specified in the query, others are implied (when only one pacticipant is specified, the integrations are automatically worked out, and the selectors for these are of type :implied ) When there are 3 pacticipants that each have dependencies on each other (A->B, A->C, B->C), the query to deploy C (implied A, implied B, specified C) was returning the A->B row because it matched the implied selectors as well. This extra filter makes sure that every row that is returned actually matches one of the specified selectors.
# File lib/pact_broker/matrix/query_builder.rb, line 56 def self.either_consumer_or_provider_was_specified_in_query(query_ids, qualifier = nil) Sequel.|({ qualify(qualifier, :consumer_id) => query_ids.specified_pacticipant_ids } , { qualify(qualifier, :provider_id) => query_ids.specified_pacticipant_ids }) end
provider_matches(query_ids, qualifier)
click to toggle source
# File lib/pact_broker/matrix/query_builder.rb, line 8 def self.provider_matches(query_ids, qualifier) { qualify(qualifier, :provider_id) => query_ids.pacticipant_ids, } end
provider_or_provider_version_criteria(query_ids, provider_version_qualifier = nil, provider_qualifier = nil)
click to toggle source
# File lib/pact_broker/matrix/query_builder.rb, line 30 def self.provider_or_provider_version_criteria(query_ids, provider_version_qualifier = nil, provider_qualifier = nil) ors = [] ors << { qualify(provider_version_qualifier, :provider_version_id) => query_ids.pacticipant_version_ids } if query_ids.pacticipant_version_ids.any? ors << { qualify(provider_qualifier, :provider_id) => query_ids.pacticipant_ids } if query_ids.pacticipant_ids.any? ors end
provider_or_provider_version_matches(query_ids, provider_version_qualifier = nil, provider_qualifier = nil)
click to toggle source
# File lib/pact_broker/matrix/query_builder.rb, line 4 def self.provider_or_provider_version_matches(query_ids, provider_version_qualifier = nil, provider_qualifier = nil) Sequel.|(*provider_or_provider_version_criteria(query_ids, provider_version_qualifier, provider_qualifier)) end
provider_or_provider_version_matches_or_pact_unverified(query_ids, provider_version_qualifier = nil, provider_qualifier = nil)
click to toggle source
# File lib/pact_broker/matrix/query_builder.rb, line 14 def self.provider_or_provider_version_matches_or_pact_unverified(query_ids, provider_version_qualifier = nil, provider_qualifier = nil) ors = provider_or_provider_version_criteria(query_ids, provider_version_qualifier, provider_qualifier) # If we have specified any versions, then we need to add an # "OR (provider matches these IDs and provider version is null)" # so that we get a line with blank verification details. if query_ids.pacticipant_version_ids.any? ors << { qualify(provider_qualifier, :provider_id) => query_ids.all_pacticipant_ids, qualify(provider_version_qualifier, :provider_version_id) => nil } end Sequel.|(*ors) end
qualify(qualifier, column)
click to toggle source
# File lib/pact_broker/matrix/query_builder.rb, line 81 def self.qualify(qualifier, column) if qualifier Sequel[qualifier][column] else column end end