Sha256: 3ee5b9622106f4c3cac4138da64642a4f934546c85b2d73133406eaf293f3996

Contents?: true

Size: 1.42 KB

Versions: 13

Compression:

Stored size: 1.42 KB

Contents

module Typus
  module Orm
    module ActiveRecord
      module Search

        include Typus::Orm::Base::Search

        def build_search_conditions(key, value)
          Array.new.tap do |search|
            query = ::ActiveRecord::Base.connection.quote_string(value.downcase)

            search_fields = typus_search_fields
            search_fields = search_fields.empty? ? { "name" => "@" } : search_fields

            search_fields.each do |key, value|
              _query = case value
                       when "=" then query
                       when "^" then "#{query}%"
                       when "@" then "%#{query}%"
                       end

              column_name = (key.match('\.') ? key : "#{table_name}.#{key}")
              table_key = (adapter == 'postgresql') ? "LOWER(TEXT(#{column_name}))" : "#{column_name}"

              search << "#{table_key} LIKE '#{_query}'"
            end
          end.join(" OR ")
        end

        # TODO: Use Rails scopes to build the search: where(key => interval)
        def build_filter_interval(interval, key)
          ["#{table_name}.#{key} BETWEEN ? AND ?", interval.first.to_s(:db), interval.last.to_s(:db)]
        end

        def build_my_joins(params)
          query_params = params.dup
          query_params.reject! { |k, v| !model_relationships.keys.include?(k.to_sym) }
          query_params.compact.map { |k, v| k.to_sym }
        end

      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
brainsome_typus-4.0.0.beta13 lib/typus/orm/active_record/search.rb
brainsome_typus-4.0.0.beta12 lib/typus/orm/active_record/search.rb
brainsome_typus-4.0.0.beta11 lib/typus/orm/active_record/search.rb
brainsome_typus-4.0.0.beta10 lib/typus/orm/active_record/search.rb
brainsome_typus-4.0.0.beta9 lib/typus/orm/active_record/search.rb
brainsome_typus-4.0.0.beta8 lib/typus/orm/active_record/search.rb
brainsome_typus-4.0.0.beta7 lib/typus/orm/active_record/search.rb
brainsome_typus-4.0.0.beta6 lib/typus/orm/active_record/search.rb
brainsome_typus-4.0.0.beta5 lib/typus/orm/active_record/search.rb
brainsome_typus-4.0.0.beta4 lib/typus/orm/active_record/search.rb
brainsome_typus-4.0.0.beta3 lib/typus/orm/active_record/search.rb
brainsome_typus-4.0.0.beta2 lib/typus/orm/active_record/search.rb
brainsome_typus-4.0.0.beta1 lib/typus/orm/active_record/search.rb