Class: PactBroker::Tags::Repository

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

Instance Method Summary collapse

Methods included from Repositories::Helpers

#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

#create(args) ⇒ Object



10
11
12
13
14
15
16
17
18
# File 'lib/pact_broker/tags/repository.rb', line 10

def create args
  params = {
    name: args.fetch(:name),
    version_id: args.fetch(:version).id,
    version_order: args.fetch(:version).order,
    pacticipant_id: args.fetch(:version).pacticipant_id
  }
  Domain::Tag.new(params).insert_ignore
end

#delete_by_version_id(version_id) ⇒ Object



31
32
33
# File 'lib/pact_broker/tags/repository.rb', line 31

def delete_by_version_id version_id
  Domain::Tag.where(version_id: version_id).delete
end

#find(args) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/pact_broker/tags/repository.rb', line 20

def find args
  PactBroker::Domain::Tag
    .select_all_qualified
    .join(:versions, { id: :version_id })
    .join(:pacticipants, {Sequel.qualify("pacticipants", "id") => Sequel.qualify("versions", "pacticipant_id")})
    .where(name_like(Sequel.qualify("tags", "name"), args.fetch(:tag_name)))
    .where(name_like(Sequel.qualify("versions", "number"), args.fetch(:pacticipant_version_number)))
    .where(name_like(Sequel.qualify("pacticipants", "name"), args.fetch(:pacticipant_name)))
    .single_record
end

#find_all_tag_names_for_pacticipant(pacticipant_name) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/pact_broker/tags/repository.rb', line 35

def find_all_tag_names_for_pacticipant pacticipant_name
  PactBroker::Domain::Tag
  .select(Sequel[:tags][:name])
  .join(:versions, { Sequel[:versions][:id] => Sequel[:tags][:version_id] })
  .join(:pacticipants, { Sequel[:pacticipants][:id] => Sequel[:versions][:pacticipant_id] })
  .where(Sequel[:pacticipants][:name] => pacticipant_name)
  .distinct
  .collect{ |tag| tag[:name] }.sort
end