Module: GenericSearch::Validation
- Included in:
- Klass
- Defined in:
- lib/generic_search/validation.rb
Instance Method Summary collapse
- #valid_syntax?(query_string) ⇒ Boolean
- #validate ⇒ Object
-
#validate_columns(table_name, column_names, clause) ⇒ Object
def validate_table_columns.
- #validate_group ⇒ Object
- #validate_limit ⇒ Object
- #validate_query ⇒ Object
- #validate_results ⇒ Object
- #validate_sort_order ⇒ Object
- #validate_syntax ⇒ Object
-
#validate_table_columns(table, columns) ⇒ Object
def validate_columns(table_name, column_names, clause).
- #validate_uri_syntax ⇒ Object
Instance Method Details
#valid_syntax?(query_string) ⇒ Boolean
104 105 106 |
# File 'lib/generic_search/validation.rb', line 104 def valid_syntax?(query_string) end |
#validate ⇒ Object
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_group ⇒ Object
116 117 118 |
# File 'lib/generic_search/validation.rb', line 116 def validate_group end |
#validate_limit ⇒ Object
124 125 126 |
# File 'lib/generic_search/validation.rb', line 124 def validate_limit end |
#validate_query ⇒ Object
108 109 110 |
# File 'lib/generic_search/validation.rb', line 108 def validate_query end |
#validate_results ⇒ Object
112 113 114 |
# File 'lib/generic_search/validation.rb', line 112 def validate_results end |
#validate_sort_order ⇒ Object
120 121 122 |
# File 'lib/generic_search/validation.rb', line 120 def validate_sort_order end |
#validate_syntax ⇒ Object
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_syntax ⇒ Object
175 176 177 |
# File 'lib/generic_search/validation.rb', line 175 def validate_uri_syntax end |