class AgnosticBackend::Queryable::Validator
Public Class Methods
new()
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 7 def initialize @valid = true end
Private Instance Methods
attribute_error(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 183 def attribute_error(subject) "Attribute '#{subject.name}' in #{subject.parent.class.name} missing from schema" end
value_error(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 179 def value_error(subject) "Value #{subject.value} for #{subject.associated_attribute.name} in #{subject.parent.class.name} is defined as #{subject.type} type in schema" end
visit_attribute(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 140 def visit_attribute(subject) if value_for_key(subject.context.index.schema, subject.name).nil? && !subject.any? && !subject.score? subject.context.query.errors[subject.class.name] << attribute_error(subject) @valid = false end end
visit_criteria_contains(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 48 def visit_criteria_contains(subject) visit(subject.attribute) visit(subject.value) end
visit_criteria_equal(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 18 def visit_criteria_equal(subject) visit(subject.attribute) visit(subject.value) end
visit_criteria_free_text(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 82 def visit_criteria_free_text(subject) visit(subject.attribute) visit(subject.value) end
visit_criteria_fuzzy(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 87 def visit_criteria_fuzzy(subject) visit(subject.attribute) visit(subject.value) end
visit_criteria_greater(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 28 def visit_criteria_greater(subject) visit(subject.attribute) visit(subject.value) end
visit_criteria_greater_and_less(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 58 def visit_criteria_greater_and_less(subject) visit(subject.attribute) visit(subject.left_value) visit(subject.right_value) end
visit_criteria_greater_and_less_equal(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 70 def visit_criteria_greater_and_less_equal(subject) visit(subject.attribute) visit(subject.left_value) visit(subject.right_value) end
visit_criteria_greater_equal(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 38 def visit_criteria_greater_equal(subject) visit(subject.attribute) visit(subject.value) end
visit_criteria_greater_equal_and_less(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 64 def visit_criteria_greater_equal_and_less(subject) visit(subject.attribute) visit(subject.left_value) visit(subject.right_value) end
visit_criteria_greater_equal_and_less_equal(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 76 def visit_criteria_greater_equal_and_less_equal(subject) visit(subject.attribute) visit(subject.left_value) visit(subject.right_value) end
visit_criteria_less(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 33 def visit_criteria_less(subject) visit(subject.attribute) visit(subject.value) end
visit_criteria_less_equal(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 43 def visit_criteria_less_equal(subject) visit(subject.attribute) visit(subject.value) end
visit_criteria_not_equal(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 23 def visit_criteria_not_equal(subject) visit(subject.attribute) visit(subject.value) end
visit_criteria_starts(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 53 def visit_criteria_starts(subject) visit(subject.attribute) visit(subject.value) end
visit_expressions_filter(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 116 def visit_expressions_filter(subject) visit(subject.criterion) end
visit_expressions_limit(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 128 def visit_expressions_limit(subject) visit(subject.limit) end
visit_expressions_offset(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 132 def visit_expressions_offset(subject) visit(subject.offset) end
visit_expressions_order(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 124 def visit_expressions_order(subject) subject.qualifiers.each { |c| visit(c) } end
visit_expressions_scroll_cursor(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 136 def visit_expressions_scroll_cursor(subject) visit(subject.scroll_cursor) end
visit_expressions_select(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 120 def visit_expressions_select(subject) subject.projections.each { |c| visit(c) } end
visit_expressions_where(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 112 def visit_expressions_where(subject) visit(subject.criterion) end
visit_operations_and(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 96 def visit_operations_and(subject) subject.operands.each { |o| visit(o) } end
visit_operations_ascending(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 104 def visit_operations_ascending(subject) visit(subject.attribute) end
visit_operations_descending(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 108 def visit_operations_descending(subject) visit(subject.attribute) end
visit_operations_not(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 92 def visit_operations_not(subject) visit(subject.operand) end
visit_operations_or(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 100 def visit_operations_or(subject) subject.operands.each { |o| visit(o) } end
visit_query(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 13 def visit_query(subject) subject.children.each { |c| visit(c) } @valid end
visit_value(subject)
click to toggle source
# File lib/agnostic_backend/queryable/validator.rb, line 147 def visit_value(subject) case subject.type when :integer unless subject.value.is_a?(Fixnum) subject.context.query.errors[subject.class.name] << value_error(subject) @valid = false end when :double unless subject.value.is_a?(Float) subject.context.query.errors[subject.class.name] << value_error(subject) @valid = false end when :string,:string_array,:text,:text_array unless subject.value.is_a?(String) subject.context.query.errors[subject.class.name] << value_error(subject) @valid = false end when :date,:date_array unless subject.value.is_a?(Time) subject.context.query.errors[subject.class.name] << value_error(subject) @valid = false end when :boolean unless subject.value.is_a?(TrueClass) || subject.value.is_a?(FalseClass) subject.context.query.errors[subject.class.name] << value_error(subject) @valid = false end else true end end