Sha256: 342f1b7d7e2acae5604dbc7ce33621e7d5d7d54857822518aaf999e30886b507

Contents?: true

Size: 794 Bytes

Versions: 123

Compression:

Stored size: 794 Bytes

Contents

module Daddy
  module Utils
    class SqlUtils

      def self.escape_search(str)
        str.gsub(/\\/, '\\\\\\\\').gsub(/%/, '\%').gsub(/_/, '\_')
      end
      
      def self.like(columns, keywords)
        target_columns = columns.is_a?(Array) ? columns : [columns]

        sql = []
        sql[0] = '('
    
        keywords.gsub(/ /, ' ').split.each_with_index do |s, i|
          like = SqlUtils.escape_search(s)

          sql[0]  << ' or ' if i > 0
          sql[0] << '('

          target_columns.each_with_index do |column, j|
            sql[0] << ' or ' if j > 0
            sql[0] << "#{column} like ?"
            sql << '%' + like + '%'
          end
    
          sql[0] << ')'
        end
    
        sql[0]  << ')'
        sql      
      end
    
    end
  end
end

Version data entries

123 entries across 123 versions & 1 rubygems

Version Path
daddy-0.9.19 lib/daddy/utils/sql_utils.rb
daddy-0.9.18 lib/daddy/utils/sql_utils.rb
daddy-0.9.17 lib/daddy/utils/sql_utils.rb
daddy-0.9.16 lib/daddy/utils/sql_utils.rb
daddy-0.9.15 lib/daddy/utils/sql_utils.rb
daddy-0.9.14 lib/daddy/utils/sql_utils.rb
daddy-0.9.13 lib/daddy/utils/sql_utils.rb
daddy-0.9.12 lib/daddy/utils/sql_utils.rb
daddy-0.9.11 lib/daddy/utils/sql_utils.rb
daddy-0.9.10 lib/daddy/utils/sql_utils.rb
daddy-0.9.9 lib/daddy/utils/sql_utils.rb
daddy-0.9.8 lib/daddy/utils/sql_utils.rb
daddy-0.9.7 lib/daddy/utils/sql_utils.rb
daddy-0.9.6 lib/daddy/utils/sql_utils.rb
daddy-0.9.5 lib/daddy/utils/sql_utils.rb
daddy-0.9.4 lib/daddy/utils/sql_utils.rb
daddy-0.9.3 lib/daddy/utils/sql_utils.rb
daddy-0.9.2 lib/daddy/utils/sql_utils.rb
daddy-0.9.1 lib/daddy/utils/sql_utils.rb
daddy-0.9.0 lib/daddy/utils/sql_utils.rb