Class: PactBroker::Repositories::PactRepository

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/pact_broker/repositories/pact_repository.rb

Constant Summary

Constants included from Logging

Logging::LOG_DIR, Logging::LOG_FILE_NAME

Instance Method Summary collapse

Methods included from Logging

included, #logger

Instance Method Details

#create(params) ⇒ Object



24
25
26
# File 'lib/pact_broker/repositories/pact_repository.rb', line 24

def create params
  PactBroker::Models::Pact.new(version_id: params[:version_id], provider_id: params[:provider_id], json_content: params[:json_content]).save
end

#create_or_update(params) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/pact_broker/repositories/pact_repository.rb', line 28

def create_or_update params
  if pact = find_by_version_and_provider(params[:version_id], params[:provider_id])
    pact.update_fields(json_content: params[:json_content])
  else
    create params
  end
end

#find_by_version_and_provider(version_id, provider_id) ⇒ Object



9
10
11
# File 'lib/pact_broker/repositories/pact_repository.rb', line 9

def find_by_version_and_provider version_id, provider_id
  PactBroker::Models::Pact.where(version_id: version_id, provider_id: provider_id).single_record
end

#find_latest_version(consumer_name, provider_name) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/pact_broker/repositories/pact_repository.rb', line 13

def find_latest_version(consumer_name, provider_name)
  PactBroker::Models::Pact.select(:pacts__id, :pacts__json_content, :pacts__version_id, :pacts__provider_id, :versions__number___consumer_version_number).
    join(:versions, {:id => :version_id}, {implicit_qualifier: :pacts}).
    join(:pacticipants, {:id => :pacticipant_id}, {:table_alias => :consumers, implicit_qualifier: :versions}).
    join(:pacticipants, {:id => :provider_id}, {:table_alias => :providers, implicit_qualifier: :pacts}).
    where('providers.name = ?', provider_name).
    where('consumers.name = ?', consumer_name).
    order('versions.id').
    last
end