Class: Activecube::Query::Ordering

Inherits:
Object
  • Object
show all
Defined in:
lib/activecube/query/ordering.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(argument, direction) ⇒ Ordering

Returns a new instance of Ordering.



6
7
8
9
# File 'lib/activecube/query/ordering.rb', line 6

def initialize argument, direction
  @argument = argument
  @direction = direction
end

Instance Attribute Details

#argumentObject (readonly)

Returns the value of attribute argument.



5
6
7
# File 'lib/activecube/query/ordering.rb', line 5

def argument
  @argument
end

#directionObject (readonly)

Returns the value of attribute direction.



5
6
7
# File 'lib/activecube/query/ordering.rb', line 5

def direction
  @direction
end

Instance Method Details

#append_query(_model, _cube_query, _table, query) ⇒ Object



11
12
13
14
# File 'lib/activecube/query/ordering.rb', line 11

def append_query _model, _cube_query, _table, query
  text = argument.to_s.split(',').map{|s| quote s}.join(',')
  query.order(::Arel.sql(text).send(direction))
end

#quote(s) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/activecube/query/ordering.rb', line 16

def quote s
  if s =~ /^[\w\.]+$/
    "`#{s}`"
  else
    s
  end
end