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