Module: PactBroker::Repositories::Helpers
- Extended by:
- Helpers
- Included in:
- Labels::Repository, Matrix::Repository, Pacticipants::Repository, Helpers, Tags::Repository, Verifications, Verifications::Repository, Versions, Versions::Repository
- Defined in:
- lib/pact_broker/repositories/helpers.rb
Instance Method Summary collapse
- #case_sensitivity_options ⇒ Object
- #mysql? ⇒ Boolean
- #name_like(column_name, value) ⇒ Object
- #order_ignore_case(column_name = :name) ⇒ Object
- #postgres? ⇒ Boolean
- #select_all_qualified ⇒ Object
- #select_for_subquery(column) ⇒ Object
- #upsert(row, key_names, columns_to_update = nil) ⇒ Object
Instance Method Details
#case_sensitivity_options ⇒ Object
11 12 13 |
# File 'lib/pact_broker/repositories/helpers.rb', line 11 def {case_insensitive: !PactBroker.configuration.use_case_sensitive_resource_names} end |
#mysql? ⇒ 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, ) 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
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_qualified ⇒ Object
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, key_names, columns_to_update = nil) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/pact_broker/repositories/helpers.rb', line 39 def upsert row, key_names, columns_to_update = nil if postgres? insert_conflict(update: row, target: key_names).insert(row) elsif mysql? update_cols = columns_to_update || (row.keys - key_names) on_duplicate_key_update(*update_cols).insert(row) else # Sqlite key = row.reject{ |k, v| !key_names.include?(k) } if where(key).count == 0 insert(row) else where(key).update(row) end end end |