Class: Libcouchbase::ResultsNative
- Inherits:
-
Results
- Object
- Results
- Libcouchbase::ResultsNative
show all
- Defined in:
- lib/libcouchbase/results_native.rb
Instance Attribute Summary
Attributes inherited from Results
#complete_result_set, #metadata, #query_completed, #query_in_progress
Instance Method Summary
collapse
Constructor Details
#initialize(query, &row_modifier) ⇒ ResultsNative
Returns a new instance of ResultsNative.
7
8
9
10
11
12
13
14
15
16
17
|
# File 'lib/libcouchbase/results_native.rb', line 7
def initialize(query, &row_modifier)
@query_in_progress = false
@query_completed = false
@complete_result_set = false
@results = []
@query = query
@row_modifier = row_modifier
end
|
Instance Method Details
#cancel ⇒ Object
126
127
128
129
130
131
|
# File 'lib/libcouchbase/results_native.rb', line 126
def cancel
return if @cancelled
@cancelled = true
@query.cancel
process_next_item
end
|
#count ⇒ Object
99
100
101
102
|
# File 'lib/libcouchbase/results_native.rb', line 99
def count
first unless @metadata
@query.get_count @metadata
end
|
#each(&blk) ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/libcouchbase/results_native.rb', line 54
def each(&blk)
return load_all.each unless block_given?
if @complete_result_set
@results.each &blk
else
perform
begin
index = 0
while !@query_completed || (cont = index < @results.length) do
if cont
yield @results[index]
index += 1
else
process_next_item
end
end
ensure
cancel unless @query_completed
end
raise @error if @error
end
self
end
|
#first ⇒ Object
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# File 'lib/libcouchbase/results_native.rb', line 83
def first
if @complete_result_set || @results.length > 0
@results[0]
else
perform is_complete: false, limit: 1
while not @query_completed do
process_next_item
end
raise @error if @error
result = @results[0]
result
end
end
|
#options(**opts) ⇒ Object
19
20
21
22
|
# File 'lib/libcouchbase/results_native.rb', line 19
def options(**opts)
reset
@query.options.merge!(opts)
end
|
#reset ⇒ Object
47
48
49
50
51
52
|
# File 'lib/libcouchbase/results_native.rb', line 47
def reset
raise 'query in progress' if @query_in_progress
@query_in_progress = false
@complete_result_set = false
@results.clear
end
|
#stream(&blk) ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/libcouchbase/results_native.rb', line 24
def stream(&blk)
if @complete_result_set
@results.each &blk
else
perform is_complete: false
begin
while !@query_completed || (cont = @results.length > 0) do
if cont
yield @results.shift
else
process_next_item
end
end
ensure
cancel unless @query_completed
end
raise @error if @error
end
self
end
|
#take(num) ⇒ Object
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
# File 'lib/libcouchbase/results_native.rb', line 104
def take(num)
if @complete_result_set || @results.length >= num
@results[0...num]
else
perform is_complete: false, limit: num
index = 0
result = []
while !@query_completed || (cont = index < @results.length && index < num) do
if cont
result << @results[index]
index += 1
else
process_next_item
end
end
raise @error if @error
result
end
end
|