Sha256: cae61570254f25475943f4aaebb558db72ac020e9e32b68a2c1f3e6fbc49d922

Contents?: true

Size: 1.35 KB

Versions: 13

Compression:

Stored size: 1.35 KB

Contents

module DataTable
  module Mongoid
    module ClassMethods
      def _find_objects params, fields, search_fields
        self.where(_where_conditions params[:ssearch], search_fields).
             order_by(_order_by_fields params, fields).
             page(_page params).
             per(_per_page params)
      end

      def _matching_count params, search_fields
        self.where(_where_conditions params[:ssearch], search_fields).count
      end

      def _where_conditions raw_query, search_fields
        query = _sanitize raw_query
        return if (query = _sanitize raw_query).blank?

        if search_fields.size == 1
          terms = query.split(/\s+/)

          if terms.size == 1
            {search_fields.first => /#{terms.first}/i}
          else
            {search_fields.first => {"$all" => terms.map {|term| /#{term}/i }}}
          end
        else
          terms = query.split(/\s+/)
          terms_and_fields = terms.map do |term|
            {"$or" => search_fields.map {|field| {field => /#{term}/i} }}
          end

          {"$and" => terms_and_fields}
        end
      end

      def _order_by_fields params, fields
        [fields[params[:isortcol_0].to_i], params[:ssortdir_0] || "asc"]
      end

      def _sanitize string
        string.to_s.strip.gsub(/([\^\\\/\.\+\*\?\|\[\]\(\)\{\}\$])/) { "\\#{$1}" }
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
data_table-0.4.15 lib/data_table/mongoid.rb
data_table-0.4.14 lib/data_table/mongoid.rb
data_table-0.4.13 lib/data_table/mongoid.rb
data_table-0.4.12 lib/data_table/mongoid.rb
data_table-0.4.11 lib/data_table/mongoid.rb
data_table-0.4.10 lib/data_table/mongoid.rb
data_table-0.4.9 lib/data_table/mongoid.rb
data_table-0.4.8 lib/data_table/mongoid.rb
data_table-0.4.7 lib/data_table/mongoid.rb
data_table-0.4.6 lib/data_table/mongoid.rb
data_table-0.4.5 lib/data_table/mongoid.rb
data_table-0.4.4 lib/data_table/mongoid.rb
data_table-0.4.3 lib/data_table/mongoid.rb