class PactBroker::Pacticipants::Repository
Public Instance Methods
create(params)
click to toggle source
Need to be able to handle two calls that make the pacticipant at the same time. TODO raise error if attributes apart from name are different, because this indicates that the second request is not at the same time.
# File lib/pact_broker/pacticipants/repository.rb, line 54 def create params PactBroker::Domain::Pacticipant.new( name: params.fetch(:name), display_name: params[:display_name], repository_url: params[:repository_url], repository_name: params[:repository_name], repository_namespace: params[:repository_namespace], main_branch: params[:main_branch] ).insert_ignore end
delete_if_orphan(pacticipant)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 83 def delete_if_orphan(pacticipant) if PactBroker::Domain::Version.where(pacticipant: pacticipant).empty? && PactBroker::Pacts::PactPublication.where(provider: pacticipant).or(consumer: pacticipant).empty? && PactBroker::Pacts::PactVersion.where(provider: pacticipant).or(consumer: pacticipant).empty? && PactBroker::Webhooks::Webhook.where(provider: pacticipant).or(consumer: pacticipant).empty? pacticipant.destroy end end
find(options = {})
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 33 def find options = {} query = PactBroker::Domain::Pacticipant.select_all_qualified query = query.label(options[:label_name]) if options[:label_name] query.order_ignore_case(Sequel[:pacticipants][:name]).eager(:labels).eager(:latest_version).all end
find_all()
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 29 def find_all find end
find_all_pacticipant_versions_in_reverse_order(name, pagination_options = nil)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 39 def find_all_pacticipant_versions_in_reverse_order name, pagination_options = nil pacticipant = pacticipant_repository.find_by_name!(name) query = PactBroker::Domain::Version.where(pacticipant: pacticipant).reverse_order(:order) query = query.paginate(pagination_options[:page_number], pagination_options[:page_size]) if pagination_options query end
find_by_id(id)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 25 def find_by_id id PactBroker::Domain::Pacticipant.where(id: id).single_record end
find_by_name(name)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 13 def find_by_name name pacticipants = PactBroker::Domain::Pacticipant.where(name_like(:name, name)).all handle_multiple_pacticipants_found(name, pacticipants) if pacticipants.size > 1 pacticipants.first end
find_by_name!(name)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 19 def find_by_name! name pacticipant = find_by_name(name) raise PactBroker::Error, "No pacticipant found with name '#{name}'" unless pacticipant pacticipant end
find_by_name_or_create(name)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 46 def find_by_name_or_create name pacticipant = find_by_name(name) pacticipant ? pacticipant : create(name: name) end
handle_multiple_pacticipants_found(name, pacticipants)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 92 def handle_multiple_pacticipants_found(name, pacticipants) names = pacticipants.collect(&:name).join(", ") raise PactBroker::Error.new("Found multiple pacticipants with a case insensitive name match for '#{name}': #{names}. Please delete one of them, or set PactBroker.configuration.use_case_sensitive_resource_names = true") end
pacticipant_names()
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 80 def pacticipant_names PactBroker::Domain::Pacticipant.select(:name).order(:name).collect(&:name) end
replace(_pacticipant_name, open_struct_pacticipant)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 70 def replace(_pacticipant_name, open_struct_pacticipant) PactBroker::Domain::Pacticipant.new( display_name: open_struct_pacticipant.display_name, repository_url: open_struct_pacticipant.repository_url, repository_name: open_struct_pacticipant.repository_name, repository_namespace: open_struct_pacticipant.repository_namespace, main_branch: open_struct_pacticipant.main_branch ).save end
search_by_name(pacticipant_name)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 97 def search_by_name(pacticipant_name) terms = pacticipant_name.split.map { |v| v.gsub("_", "\\_") } string_match_query = Sequel.|( *terms.map { |term| Sequel.ilike(Sequel[:pacticipants][:name], "%#{term}%") }) PactBroker::Domain::Pacticipant.where(string_match_query) end
set_main_branch(pacticipant, main_branch)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 103 def set_main_branch(pacticipant, main_branch) pacticipant.update(main_branch: main_branch) end
update(pacticipant_name, pacticipant)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 65 def update(pacticipant_name, pacticipant) pacticipant.name = pacticipant_name pacticipant.save end