Module: PactBroker::Repositories::Helpers

Instance Method Summary collapse

Instance Method Details

#case_sensitivity_optionsObject



11
12
13
# File 'lib/pact_broker/repositories/helpers.rb', line 11

def case_sensitivity_options
  {case_insensitive: !PactBroker.configuration.use_case_sensitive_resource_names}
end

#mysql?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/pact_broker/repositories/helpers.rb', line 19

def mysql?
  Sequel::Model.db.adapter_scheme.to_s =~ /mysql/
end

#name_like(column_name, value) ⇒ Object



7
8
9
# File 'lib/pact_broker/repositories/helpers.rb', line 7

def name_like column_name, value
  Sequel.like(column_name, value, case_sensitivity_options)
end

#order_ignore_case(column_name = :name) ⇒ Object



15
16
17
# File 'lib/pact_broker/repositories/helpers.rb', line 15

def order_ignore_case column_name = :name
  order(Sequel.function(:lower, column_name))
end

#postgres?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/pact_broker/repositories/helpers.rb', line 23

def postgres?
  Sequel::Model.db.adapter_scheme.to_s == "postgres"
end

#select_all_qualifiedObject



27
28
29
# File 'lib/pact_broker/repositories/helpers.rb', line 27

def select_all_qualified
  select(Sequel[model.table_name].*)
end

#select_for_subquery(column) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/pact_broker/repositories/helpers.rb', line 31

def select_for_subquery column
  if mysql? #stoopid mysql doesn't allow subqueries
    select(column).collect{ | it | it[column] }
  else
    select(column)
  end
end

#upsert(row, unique_key_names, columns_to_update = nil) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/pact_broker/repositories/helpers.rb', line 39

def upsert row, unique_key_names, columns_to_update = nil
  if postgres?
    insert_conflict(update: row, target: unique_key_names).insert(row)
  elsif mysql?
    update_cols = columns_to_update || (row.keys - unique_key_names)
    on_duplicate_key_update(*update_cols).insert(row)
  else
    # Sqlite
    key = row.reject{ |k, v| !unique_key_names.include?(k) }
    if where(key).count == 0
      insert(row)
    else
      where(key).update(row)
    end
  end
  model.where(row.select{ |key, _| unique_key_names.include?(key)}).single_record
end