class AgnosticBackend::Queryable::QueryBuilder

Attributes

index[R]
query[R]

Public Class Methods

new(index) click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 8
def initialize(index)
  @index = index
end

Public Instance Methods

build(**options) click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 51
def build(**options)
  query = create_query(self, **options)
  query.children << build_where_expression if @criterion
  query.children << build_select_expression if @projections
  query.children << build_order_expression if @order_qualifiers
  query.children << build_limit_expression if @limit
  query.children << build_offset_expression if @offset
  query.children << build_filter_expression if @filter
  query.children << build_scroll_cursor_expression if @scroll_cursor

  @query = query
end
criteria_builder() click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 12
def criteria_builder
  CriteriaBuilder.new(self)
end
filter(filter) click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 46
def filter(filter)
  @filter = filter
  self
end
limit(value) click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 31
def limit(value)
  @limit = value
  self
end
offset(value) click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 36
def offset(value)
  @offset = value
  self
end
order(attribute, direction) click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 26
def order(attribute, direction)
  (@order_qualifiers ||= []).push build_order_qualifier(attribute, direction)
  self
end
scroll_cursor(value) click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 41
def scroll_cursor(value)
  @scroll_cursor = value
  self
end
select(*attributes) click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 21
def select(*attributes)
  (@projections ||= []).push(*attributes)
  self
end
where(criterion) click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 16
def where(criterion)
  @criterion = criterion
  self
end

Private Instance Methods

build_filter_expression() click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 74
def build_filter_expression
  Expressions::Filter.new(criterion: @filter, context: self)
end
build_limit_expression() click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 86
def build_limit_expression
  Expressions::Limit.new(value: @limit, context: self)
end
build_offset_expression() click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 90
def build_offset_expression
  Expressions::Offset.new(value: @offset, context: self)
end
build_order_expression() click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 82
def build_order_expression
  Expressions::Order.new(attributes: @order_qualifiers, context: self)
end
build_order_qualifier(attribute, direction) click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 98
def build_order_qualifier(attribute, direction)
  case direction
    when :asc
      Operations::Ascending.new(attribute: attribute, context: self)
    when :desc
      Operations::Descending.new(attribute: attribute, context: self)
  end
end
build_scroll_cursor_expression() click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 94
def build_scroll_cursor_expression
  Expressions::ScrollCursor.new(value: @scroll_cursor, context: self)
end
build_select_expression() click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 78
def build_select_expression
  Expressions::Select.new(attributes: @projections, context: self)
end
build_where_expression() click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 70
def build_where_expression
  Expressions::Where.new(criterion: @criterion, context: self)
end
create_query(context, **options) click to toggle source
# File lib/agnostic_backend/queryable/query_builder.rb, line 66
def create_query(context, **options)
  raise NotImplementedError, 'AbstractMethod'
end