Sha256: 64d1659ea05ea5b58851bf144002d9ca05b775da91e4ace313308369dbbc89a9

Contents?: true

Size: 1.54 KB

Versions: 11

Compression:

Stored size: 1.54 KB

Contents

module PactBroker
  module Repositories
    module Helpers

      extend self

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

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

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

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

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

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

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

      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
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
pact_broker-2.43.0 lib/pact_broker/repositories/helpers.rb
pact_broker-2.42.0 lib/pact_broker/repositories/helpers.rb
pact_broker-2.41.0 lib/pact_broker/repositories/helpers.rb
pact_broker-2.40.0 lib/pact_broker/repositories/helpers.rb
pact_broker-2.39.0 lib/pact_broker/repositories/helpers.rb
pact_broker-2.38.1 lib/pact_broker/repositories/helpers.rb
pact_broker-2.38.0 lib/pact_broker/repositories/helpers.rb
pact_broker-2.37.0 lib/pact_broker/repositories/helpers.rb
pact_broker-2.36.1 lib/pact_broker/repositories/helpers.rb
pact_broker-2.36.0 lib/pact_broker/repositories/helpers.rb
pact_broker-2.35.0 lib/pact_broker/repositories/helpers.rb