Class: ModelSet::Query
- Inherits:
-
Object
show all
- Defined in:
- lib/model_set/query.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(model_set = ModelSet, *args) ⇒ Query
Returns a new instance of Query.
5
6
7
8
9
10
11
12
|
# File 'lib/model_set/query.rb', line 5
def initialize(model_set = ModelSet, *args)
if model_set.kind_of?(Class)
@set_class = model_set
else
@set_class = model_set.class
anchor!(model_set.query, *args) if model_set.query
end
end
|
Instance Attribute Details
#limit ⇒ Object
Returns the value of attribute limit.
59
60
61
|
# File 'lib/model_set/query.rb', line 59
def limit
@limit
end
|
#set_class ⇒ Object
Returns the value of attribute set_class.
59
60
61
|
# File 'lib/model_set/query.rb', line 59
def set_class
@set_class
end
|
#sort_order ⇒ Object
Returns the value of attribute sort_order.
59
60
61
|
# File 'lib/model_set/query.rb', line 59
def sort_order
@sort_order
end
|
Class Method Details
.after_query(*args, &block) ⇒ Object
122
123
124
125
126
127
128
|
# File 'lib/model_set/query.rb', line 122
def self.after_query(*args, &block)
if block
@after_query = block
else
@after_query
end
end
|
.before_query(&block) ⇒ Object
96
97
98
99
100
101
102
|
# File 'lib/model_set/query.rb', line 96
def self.before_query(&block)
if block
@before_query = block
else
@before_query
end
end
|
.on_exception(&block) ⇒ Object
109
110
111
112
113
114
115
|
# File 'lib/model_set/query.rb', line 109
def self.on_exception(&block)
if block
@on_exception = block
else
@on_exception
end
end
|
Instance Method Details
#after_query(*args) ⇒ Object
117
118
119
120
|
# File 'lib/model_set/query.rb', line 117
def after_query(*args)
proc = self.class.after_query
proc.bind(self).call(*args) if proc
end
|
#before_query(*args) ⇒ Object
91
92
93
94
|
# File 'lib/model_set/query.rb', line 91
def before_query(*args)
proc = self.class.before_query
proc.bind(self).call(*args) if proc
end
|
#clear_cache! ⇒ Object
54
55
56
57
|
# File 'lib/model_set/query.rb', line 54
def clear_cache!
@count = nil
clear_limited_cache!
end
|
#clear_limited_cache! ⇒ Object
48
49
50
51
52
|
# File 'lib/model_set/query.rb', line 48
def clear_limited_cache!
@ids = nil
@size = nil
self
end
|
#condition_ops ⇒ Object
130
131
132
133
134
|
# File 'lib/model_set/query.rb', line 130
def condition_ops
{ :not => 'NOT ',
:and => ' AND ',
:or => ' OR ' }
end
|
#limit!(limit, offset = nil) ⇒ Object
34
35
36
37
38
39
|
# File 'lib/model_set/query.rb', line 34
def limit!(limit, offset = nil)
@limit = limit ? limit.to_i : nil
@offset = offset ? offset.to_i : nil
@page = nil if offset
clear_limited_cache!
end
|
#limit_enabled? ⇒ Boolean
30
31
32
|
# File 'lib/model_set/query.rb', line 30
def limit_enabled?
true end
|
#model_class ⇒ Object
63
64
65
|
# File 'lib/model_set/query.rb', line 63
def model_class
set_class.query_model_class
end
|
#model_name ⇒ Object
67
68
69
|
# File 'lib/model_set/query.rb', line 67
def model_name
model_class.name
end
|
#offset ⇒ Object
75
76
77
78
79
|
# File 'lib/model_set/query.rb', line 75
def offset
if limit
@offset ||= @page ? (@page - 1) * limit : 0
end
end
|
#on_exception(*args) ⇒ Object
104
105
106
107
|
# File 'lib/model_set/query.rb', line 104
def on_exception(*args)
proc = self.class.on_exception
proc ? proc.bind(self).call(*args) : raise(args.first)
end
|
#order_by!(order) ⇒ Object
14
15
16
17
|
# File 'lib/model_set/query.rb', line 14
def order_by!(order)
@sort_order = order
clear_cache!
end
|
#page ⇒ Object
81
82
83
84
85
|
# File 'lib/model_set/query.rb', line 81
def page
if limit
@page ||= @offset ? (@offset / limit) : 1
end
end
|
#page!(page) ⇒ Object
24
25
26
27
28
|
# File 'lib/model_set/query.rb', line 24
def page!(page)
@page = page ? page.to_i : nil
@offset = nil
clear_limited_cache!
end
|
#pages ⇒ Object
87
88
89
|
# File 'lib/model_set/query.rb', line 87
def pages
limit ? (1.0 * count / limit).ceil : 1
end
|
#table_name ⇒ Object
71
72
73
|
# File 'lib/model_set/query.rb', line 71
def table_name
model_class.table_name
end
|
136
137
138
|
# File 'lib/model_set/query.rb', line 136
def transform_condition(condition)
[condition]
end
|
#unlimited! ⇒ Object
41
42
43
44
45
46
|
# File 'lib/model_set/query.rb', line 41
def unlimited!
@limit = nil
@offset = nil
@page = nil
clear_limited_cache!
end
|
#unsorted! ⇒ Object
19
20
21
22
|
# File 'lib/model_set/query.rb', line 19
def unsorted!
@sort_order = nil
clear_cache!
end
|