Class: YADM::CriteriaParser::Criteria

Inherits:
YADM::Criteria show all
Defined in:
lib/yadm/criteria_parser.rb

Instance Attribute Summary

Attributes inherited from YADM::Criteria

#condition, #limit, #order

Instance Method Summary collapse

Methods inherited from YADM::Criteria

#==, #initialize, #merge

Constructor Details

This class inherits a constructor from YADM::Criteria

Instance Method Details

#ascending_by(&block) ⇒ Object



45
46
47
48
49
# File 'lib/yadm/criteria_parser.rb', line 45

def ascending_by(&block)
  expression = ExpressionParser.parse(block)
  clause = Order::Clause.new(:asc, expression)
  merge Criteria.new(order: Order.new([clause]))
end

#descending_by(&block) ⇒ Object



51
52
53
54
55
# File 'lib/yadm/criteria_parser.rb', line 51

def descending_by(&block)
  expression = ExpressionParser.parse(block)
  clause = Order::Clause.new(:desc, expression)
  merge Criteria.new(order: Order.new([clause]))
end

#first(limit) ⇒ Object



57
58
59
# File 'lib/yadm/criteria_parser.rb', line 57

def first(limit)
  merge Criteria.new(limit: Limit.new(limit))
end

#resultObject



32
33
34
35
36
37
38
# File 'lib/yadm/criteria_parser.rb', line 32

def result
  YADM::Criteria.new(
    condition: condition,
    order:     order,
    limit:     limit
  )
end

#with(&block) ⇒ Object



40
41
42
43
# File 'lib/yadm/criteria_parser.rb', line 40

def with(&block)
  expression = ExpressionParser.parse(block)
  merge Criteria.new(condition: Condition.new(expression))
end