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.refresh end
delete(pacticipant)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 81 def delete(pacticipant) pacticipant.destroy end
delete_if_orphan(pacticipant)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 89 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 = {}, pagination_options = {}, eager_load_associations = [])
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 39 def find(options = {}, pagination_options = {}, eager_load_associations = []) query = scope_for(PactBroker::Domain::Pacticipant).select_all_qualified query = query.filter(:name, options[:query_string]) if options[:query_string] query = query.label(options[:label_name]) if options[:label_name] query.order_ignore_case(Sequel[:pacticipants][:name]).eager(*eager_load_associations).all_with_pagination_options(pagination_options) end
find_all(options = {}, pagination_options = {}, eager_load_associations = [])
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 35 def find_all(options = {}, pagination_options = {}, eager_load_associations = []) find(options, pagination_options, eager_load_associations) end
find_by_id(id)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 31 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 12 def find_by_name name pacticipants = PactBroker::Domain::Pacticipant.where(Sequel.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 18 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
find_by_names(names)
click to toggle source
@param [Array<String>] the array of names by which to find the pacticipants
# File lib/pact_broker/pacticipants/repository.rb, line 25 def find_by_names(names) return [] if names.empty? name_likes = names.collect{ | name | Sequel.name_like(:name, name) } scope_for(PactBroker::Domain::Pacticipant).where(Sequel.|(*name_likes)).all end
handle_multiple_pacticipants_found(name, pacticipants)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 98 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 85 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( name: pacticipant_name, 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 ).upsert end
search_by_name(pacticipant_name)
click to toggle source
# File lib/pact_broker/pacticipants/repository.rb, line 103 def search_by_name(pacticipant_name) terms = pacticipant_name.split.map { |v| v.gsub("_", "\\_") } columns = [:name, :display_name] string_match_query = Sequel.|( *terms.map do |term| Sequel.|( *columns.map do |column| Sequel.ilike(Sequel[:pacticipants][column], "%#{term}%") end ) end ) scope_for(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 118 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.refresh end