Module: GenericSearch::Validation

Included in:
Klass
Defined in:
lib/generic_search/validation.rb

Instance Method Summary collapse

Instance Method Details

#valid_syntax?(query_string) ⇒ Boolean

Returns:

  • (Boolean)


104
105
106
# File 'lib/generic_search/validation.rb', line 104

def valid_syntax?(query_string)

end

#validateObject



5
6
7
# File 'lib/generic_search/validation.rb', line 5

def validate

end

#validate_columns(table_name, column_names, clause) ⇒ Object

def validate_table_columns

#self.validate_query

end



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/generic_search/validation.rb', line 64

def validate_columns(table_name, column_names, clause)

  connection = ActiveRecord::Base.connection
  config = GenericSearch.config[table_name.intern]
  config_for_where = (config and config[:for_where]) || {}
  config_for_select = (config and config[:for_select]) || {}

  if !connection.table_exists?(table_name) and !self.base_class.reflections.has_key?(table_name)
    self.errors.add(:base, "'#{table_name}' table is invalid (in '#{clause}')")
    return
  end

  if !connection.table_exists?(table_name)
    if !self.base_class.reflections.has_key?(table_name)
      self.errors.add(:base, "'#{table_name}' table is invalid (in '#{clause}')")
      return
    else
      table_name = self.base_class._relation_table[table_name.intern]
    end
  end

  return if column_names.blank?

  unknown_columns = []

  column_names.each do |column_name|
    next if config_for_select and config_for_select.has_key?(column_name.intern)
    next if config_for_where and config_for_where.has_key?(column_name.intern)

    if !connection.column_exists?(table_name, column_name) and !config_for_select.has_key?(column_name.intern) and !config_for_where.has_key?(column_name.intern)
      unknown_columns << column_name
    end
  end

  if !unknown_columns.blank?
    self.errors.add(:base, "'#{unknown_columns.join(', ')}' column#{unknown_columns.size > 1 ? 's' : ''} not found in '#{table_name}' table (in '#{clause}')")
  end

end

#validate_groupObject



116
117
118
# File 'lib/generic_search/validation.rb', line 116

def validate_group

end

#validate_limitObject



124
125
126
# File 'lib/generic_search/validation.rb', line 124

def validate_limit

end

#validate_queryObject



108
109
110
# File 'lib/generic_search/validation.rb', line 108

def validate_query

end

#validate_resultsObject



112
113
114
# File 'lib/generic_search/validation.rb', line 112

def validate_results

end

#validate_sort_orderObject



120
121
122
# File 'lib/generic_search/validation.rb', line 120

def validate_sort_order

end

#validate_syntaxObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/generic_search/validation.rb', line 9

def validate_syntax

  [params[:query], params[:results], params[:group]].each do |query_string|

    next if query_string.blank?

    #if query_string.include?(',,')
    if query_string.match(/\s*\,\s*\,\s*/)
      @status = :bad_request
      #@message = "malformed url - double comma"
      @message = GenericSearch::Messages::DoubleComma
      self.errors.add(:base, @message)
      #return false
    end

    #if query_string.include?('((')
    if query_string.match(/\s*\(\s*\(\s*/)
      @status = :bad_request
      @message = GenericSearch::Messages::DoubleOpenParan
      self.errors.add(:base, @message)
      #return false
    end

    # To check ))
    if query_string.match(/\s*\)\s*\)\s*/)
      @status = :bad_request
      @message = GenericSearch::Messages::DoubleCloseParan
      self.errors.add(:base, @message)
    end

    if query_string.count("()") % 2 == 1
      @status = :bad_request
      @message = GenericSearch::Messages::IncorrectUseOfParan
      self.errors.add(:base, @message)
    end
  end

  #if type.eql?("where_clause")
  #  puts "verifying specific legal query_strings for where_clause"
  #  if !query_string.include?('(')
  #    @status = :bad_request
  #    @message = "malformed url - no query arguments"
  #    return false
  #  end
  #end

  #return true
end

#validate_table_columns(table, columns) ⇒ Object

def validate_columns(table_name, column_names, clause)

connection = ActiveRecord::Base.connection

if !connection.table_exists?(table_name) and !self.base_class.reflections.has_key?(table_name.intern)
  @_uri_errors << "'#{table_name}' is invalid in '#{clause}'"
  return
end

if !connection.table_exists?(table_name)
  if !self.base_class.reflections.has_key?(table_name.intern)
    @_uri_errors << "'#{table_name}' is invalid in '#{clause}'"
    return
  else
    table_name = self.base_class._relation_table[table_name.intern]
  end
end

return if column_names.blank?

unknown_columns = []

config = GenericSearchMethods.config[table_name.intern]
column_names.each do |column_name|

  next if config and config.has_key?(column_name.intern)

  if !connection.column_exists?(table_name, column_name)
    unknown_columns << column_name
  end
end

if !unknown_columns.blank?
  @_uri_errors << "'#{unknown_columns.join(', ')}' column#{unknown_columns.size > 1 ? 's' : ''} not found in '#{table_name}' table in '#{clause}'"
end

end



166
167
168
169
170
171
172
173
# File 'lib/generic_search/validation.rb', line 166

def validate_table_columns(table, columns)
  #connection = ActiveRecord::Base.connection

  #if connection.table_exists? table
  #
  #end

end

#validate_uri_syntaxObject



175
176
177
# File 'lib/generic_search/validation.rb', line 175

def validate_uri_syntax

end