class Postgrest::Builders::FilterBuilder

Constants

RANGE_MATCHERS
SIMPLE_MATCHERS

Public Class Methods

new(http) click to toggle source
Calls superclass method Postgrest::Builders::BaseBuilder::new
# File lib/postgrest/builders/filter_builder.rb, line 11
def initialize(http)
  super
  @inverse_next = false
end

Public Instance Methods

decoded_query() click to toggle source
# File lib/postgrest/builders/filter_builder.rb, line 64
def decoded_query
  @decoded_query ||= URI.decode_www_form(query).to_h
end
in(values = []) click to toggle source
# File lib/postgrest/builders/filter_builder.rb, line 34
def in(values = [])
  transform_params(method_name: __method__, values: values) do |key, value|
    [key, "#{method_key(__method__)}.(#{value.join(',')})"]
  end

  self
end
limit(number = 0) click to toggle source
# File lib/postgrest/builders/filter_builder.rb, line 68
def limit(number = 0)
  decoded_query['limit'] = number
  self
end
method_missing(method_name, *columns, as: nil) click to toggle source
# File lib/postgrest/builders/filter_builder.rb, line 53
def method_missing(method_name, *columns, as: nil)
  decoded_query['select'] += as ? ",#{as}:#{method_name}" : ",#{method_name}"
  decoded_query['select'] += columns.empty? ? '(*)' : "(#{columns.join(',')})"

  self
end
not() click to toggle source
# File lib/postgrest/builders/filter_builder.rb, line 78
def not
  @inverse_next = !@inverse_next
  self
end
offset(number = 0) click to toggle source
# File lib/postgrest/builders/filter_builder.rb, line 73
def offset(number = 0)
  decoded_query['offset'] = number
  self
end
order(values) click to toggle source
# File lib/postgrest/builders/filter_builder.rb, line 42
def order(values)
  transform_params(method_name: __method__, values: values) do |key, value|
    asc = value.to_sym != :desc
    asc = !asc if should_invert?

    [__method__, "#{key}.#{asc ? 'asc' : 'desc'}"]
  end

  self
end
query() click to toggle source
# File lib/postgrest/builders/filter_builder.rb, line 60
def query
  http.uri.query
end

Private Instance Methods

method_key(name) click to toggle source
# File lib/postgrest/builders/filter_builder.rb, line 101
def method_key(name)
  should_invert? ? "not.#{name}" : name
end
should_invert?() click to toggle source
# File lib/postgrest/builders/filter_builder.rb, line 85
def should_invert?
  @inverse_next
end
transform_params(values:, method_name:) { |k, v| ... } click to toggle source
# File lib/postgrest/builders/filter_builder.rb, line 89
def transform_params(values:, method_name:)
  values.each do |k, v|
    key, value = yield(k, v) if block_given?
    key ||= k
    value ||= "#{method_key(method_name)}.#{v}"

    decoded_query[key.to_s] = value
  end

  @inverse_next = false
end
update_http_instance() click to toggle source

Before execute callback

# File lib/postgrest/builders/filter_builder.rb, line 106
def update_http_instance
  http.update_query_params(decoded_query)
end