class HQ::GraphQL::FilterOperations::Operation

Attributes

arel[R]
check_for_null[R]
name[R]
sanitize[R]

Public Class Methods

new(name:, arel:, check_for_null: false, sanitize: nil) click to toggle source
# File lib/hq/graphql/filter_operations.rb, line 11
def initialize(name:, arel:, check_for_null: false, sanitize: nil)
  @name           = name
  @arel           = arel
  @check_for_null = check_for_null
  @sanitize       = sanitize
end

Public Instance Methods

sanitize_value(value) click to toggle source
# File lib/hq/graphql/filter_operations.rb, line 18
def sanitize_value(value)
  sanitize ? sanitize.call(value) : value
end
to_arel(table:, column_name:, value:) click to toggle source
# File lib/hq/graphql/filter_operations.rb, line 22
def to_arel(table:, column_name:, value:)
  sanitized_value = sanitize_value(value)

  if arel.is_a?(Proc)
    return arel.call(table: table, column_name: column_name, value: sanitized_value)
  end

  expression = table[column_name].send(arel, sanitized_value)

  if check_for_null
    expression = expression.or(table[column_name].eq(nil))
  end

  expression
end