Class: PactBroker::Matrix::Repository

Inherits:
Object
  • Object
show all
Includes:
Logging, Repositories, Repositories::Helpers
Defined in:
lib/pact_broker/matrix/repository.rb

Constant Summary collapse

TP_COLS =

Used when using table_print to output query results

[ :consumer_version_number, :pact_revision_number, :provider_version_number, :verification_number]
GROUP_BY_PROVIDER_VERSION_NUMBER =
[:consumer_name, :consumer_version_number, :provider_name, :provider_version_number]
GROUP_BY_PROVIDER =
[:consumer_name, :consumer_version_number, :provider_name]
GROUP_BY_PACT =
[:consumer_name, :provider_name]

Instance Method Summary collapse

Methods included from Logging

included, #log_error, #log_with_tag

Methods included from Repositories

#branch_version_repository, #integration_repository, #label_repository, #matrix_repository, #pact_repository, #pacticipant_repository, #tag_repository, #verification_repository, #version_repository, #webhook_repository

Methods included from Repositories::Helpers

#all_allowing_lazy_load, #all_forbidding_lazy_load, #mysql?, #name_like, #no_columns_selected?, #order_append_ignore_case, #order_ignore_case, #pacticipant_id_for_name, #postgres?, #select_all_qualified, #select_append_all_qualified, #select_for_subquery

Instance Method Details

#find(specified_selectors, options = {}) ⇒ Object

Return the latest matrix row (pact/verification) for each consumer_version_number/provider_version_number



59
60
61
62
63
64
65
66
# File 'lib/pact_broker/matrix/repository.rb', line 59

def find specified_selectors, options = {}
  resolved_ignore_selectors = resolve_ignore_selectors(options)
  resolved_specified_selectors = resolve_versions_and_add_ids(specified_selectors, :specified, resolved_ignore_selectors)
  integrations = find_integrations_for_specified_selectors(resolved_specified_selectors, options)
  resolved_selectors = add_any_inferred_selectors(resolved_specified_selectors, resolved_ignore_selectors, integrations, options)
  considered_rows, ignored_rows = find_considered_and_ignored_rows(resolved_selectors, resolved_ignore_selectors, options)
  QueryResults.new(considered_rows.sort, ignored_rows.sort, specified_selectors, options, resolved_selectors, resolved_ignore_selectors, integrations)
end

#find_for_consumer_and_provider(pacticipant_1_name, pacticipant_2_name) ⇒ Object



68
69
70
71
72
# File 'lib/pact_broker/matrix/repository.rb', line 68

def find_for_consumer_and_provider pacticipant_1_name, pacticipant_2_name
  selectors = [ UnresolvedSelector.new(pacticipant_name: pacticipant_1_name), UnresolvedSelector.new(pacticipant_name: pacticipant_2_name)]
  options = { latestby: "cvpv" }
  find(selectors, options)
end

#find_ids_for_pacticipant_names(params) ⇒ Object

rubocop: disable Metrics/CyclomaticComplexity



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/pact_broker/matrix/repository.rb', line 33

def find_ids_for_pacticipant_names params
  criteria  = {}

  if params[:consumer_name] || params[:provider_name]
    if params[:consumer_name]
      pacticipant = PactBroker::Domain::Pacticipant.where(name_like(:name, params[:consumer_name])).single_record
      criteria[:consumer_id] = pacticipant.id if pacticipant
    end

    if params[:provider_name]
      pacticipant = PactBroker::Domain::Pacticipant.where(name_like(:name, params[:provider_name])).single_record
      criteria[:provider_id] = pacticipant.id if pacticipant
    end
  end

  if params[:pacticipant_name]
    pacticipant = PactBroker::Domain::Pacticipant.where(name_like(:name, params[:pacticipant_name])).single_record
    criteria[:pacticipant_id] = pacticipant.id if pacticipant
  end

  criteria[:tag_name] = params[:tag_name] if params[:tag_name].is_a?(String) # Could be a sym from resource parameters in api.rb
  criteria
end