Module: ActiveNode::QueryMethods

Included in:
Graph
Defined in:
lib/active_node/graph/query_methods.rb

Instance Method Summary collapse

Instance Method Details

#limit(value) ⇒ Object

Specifies a limit for the number of records to retrieve.

User.limit(10) # generated SQL has 'LIMIT 10'

User.limit(10).limit(20) # generated SQL has 'LIMIT 20'


38
39
40
# File 'lib/active_node/graph/query_methods.rb', line 38

def limit(value)
  spawn.limit!(value)
end

#limit!(value) ⇒ Object

:nodoc:



42
43
44
45
# File 'lib/active_node/graph/query_methods.rb', line 42

def limit!(value) # :nodoc:
  self.limit_value = value
  self
end

#offset(value) ⇒ Object

Specifies the number of rows to skip before returning rows.

User.offset(10) # generated SQL has "OFFSET 10"

Should be used with order.

User.offset(10).order("name ASC")


54
55
56
# File 'lib/active_node/graph/query_methods.rb', line 54

def offset(value)
  spawn.offset!(value)
end

#offset!(value) ⇒ Object

:nodoc:



58
59
60
61
# File 'lib/active_node/graph/query_methods.rb', line 58

def offset!(value) # :nodoc:
  self.offset_value = value
  self
end

#order(*args) ⇒ Object

Allows to specify an order attribute:

User.order('name')
=> SELECT "users".* FROM "users" ORDER BY name

User.order('name DESC')
=> SELECT "users".* FROM "users" ORDER BY name DESC

User.order('name DESC, email')
=> SELECT "users".* FROM "users" ORDER BY name DESC, email

User.order(:name)
=> SELECT "users".* FROM "users" ORDER BY "users"."name" ASC

User.order(email: :desc)
=> SELECT "users".* FROM "users" ORDER BY "users"."email" DESC

User.order(:name, email: :desc)
=> SELECT "users".* FROM "users" ORDER BY "users"."name" ASC, "users"."email" DESC


83
84
85
86
# File 'lib/active_node/graph/query_methods.rb', line 83

def order(*args)
  check_if_method_has_arguments!(:order, args)
  spawn.order!(*args)
end

#order!(*args) ⇒ Object

:nodoc:



88
89
90
91
92
93
# File 'lib/active_node/graph/query_methods.rb', line 88

def order!(*args) # :nodoc:
  preprocess_order_args(args)

  self.order_values += args
  self
end

#reorder(*args) ⇒ Object

Replaces any existing order defined on the relation with the specified order.

User.order('email DESC').reorder('id ASC') # generated SQL has 'ORDER BY id ASC'

Subsequent calls to order on the same relation will be appended. For example:

User.order('email DESC').reorder('id ASC').order('name ASC')

generates a query with ‘ORDER BY id ASC, name ASC’.



104
105
106
107
# File 'lib/active_node/graph/query_methods.rb', line 104

def reorder(*args)
  check_if_method_has_arguments!(:reorder, args)
  spawn.reorder!(*args)
end

#reorder!(*args) ⇒ Object

:nodoc:



109
110
111
112
113
114
115
# File 'lib/active_node/graph/query_methods.rb', line 109

def reorder!(*args) # :nodoc:
  preprocess_order_args(args)

  self.reordering_value = true
  self.order_values = args
  self
end

#reverse_orderObject

Reverse the existing order clause on the relation.

User.order('name ASC').reverse_order # generated SQL has 'ORDER BY name DESC'


120
121
122
# File 'lib/active_node/graph/query_methods.rb', line 120

def reverse_order
  spawn.reverse_order!
end

#reverse_order!Object

:nodoc:



124
125
126
127
# File 'lib/active_node/graph/query_methods.rb', line 124

def reverse_order! # :nodoc:
  self.reverse_order_value = !reverse_order_value
  self
end