google-cloud-bigtable 0.6.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/CONTRIBUTING.md +1 -1
  4. data/lib/google-cloud-bigtable.rb +19 -21
  5. data/lib/google/cloud/bigtable.rb +11 -17
  6. data/lib/google/cloud/bigtable/app_profile.rb +148 -82
  7. data/lib/google/cloud/bigtable/app_profile/job.rb +5 -8
  8. data/lib/google/cloud/bigtable/app_profile/list.rb +11 -5
  9. data/lib/google/cloud/bigtable/chunk_processor.rb +23 -35
  10. data/lib/google/cloud/bigtable/cluster.rb +38 -11
  11. data/lib/google/cloud/bigtable/cluster/job.rb +3 -7
  12. data/lib/google/cloud/bigtable/cluster/list.rb +20 -18
  13. data/lib/google/cloud/bigtable/column_family.rb +22 -229
  14. data/lib/google/cloud/bigtable/column_family_map.rb +426 -0
  15. data/lib/google/cloud/bigtable/column_range.rb +9 -1
  16. data/lib/google/cloud/bigtable/convert.rb +12 -4
  17. data/lib/google/cloud/bigtable/errors.rb +4 -1
  18. data/lib/google/cloud/bigtable/gc_rule.rb +184 -65
  19. data/lib/google/cloud/bigtable/instance.rb +136 -126
  20. data/lib/google/cloud/bigtable/instance/cluster_map.rb +9 -7
  21. data/lib/google/cloud/bigtable/instance/job.rb +4 -3
  22. data/lib/google/cloud/bigtable/instance/list.rb +14 -9
  23. data/lib/google/cloud/bigtable/longrunning_job.rb +6 -0
  24. data/lib/google/cloud/bigtable/mutation_entry.rb +19 -23
  25. data/lib/google/cloud/bigtable/mutation_operations.rb +82 -29
  26. data/lib/google/cloud/bigtable/policy.rb +9 -5
  27. data/lib/google/cloud/bigtable/project.rb +62 -140
  28. data/lib/google/cloud/bigtable/read_modify_write_rule.rb +9 -4
  29. data/lib/google/cloud/bigtable/read_operations.rb +28 -41
  30. data/lib/google/cloud/bigtable/routing_policy.rb +171 -0
  31. data/lib/google/cloud/bigtable/row.rb +18 -7
  32. data/lib/google/cloud/bigtable/row_filter.rb +49 -20
  33. data/lib/google/cloud/bigtable/row_filter/chain_filter.rb +71 -43
  34. data/lib/google/cloud/bigtable/row_filter/condition_filter.rb +4 -1
  35. data/lib/google/cloud/bigtable/row_filter/interleave_filter.rb +74 -43
  36. data/lib/google/cloud/bigtable/row_filter/simple_filter.rb +22 -7
  37. data/lib/google/cloud/bigtable/row_range.rb +5 -0
  38. data/lib/google/cloud/bigtable/rows_mutator.rb +14 -17
  39. data/lib/google/cloud/bigtable/rows_reader.rb +18 -14
  40. data/lib/google/cloud/bigtable/sample_row_key.rb +5 -2
  41. data/lib/google/cloud/bigtable/service.rb +161 -242
  42. data/lib/google/cloud/bigtable/status.rb +76 -0
  43. data/lib/google/cloud/bigtable/table.rb +141 -236
  44. data/lib/google/cloud/bigtable/table/cluster_state.rb +7 -1
  45. data/lib/google/cloud/bigtable/table/list.rb +14 -7
  46. data/lib/google/cloud/bigtable/value_range.rb +5 -0
  47. data/lib/google/cloud/bigtable/version.rb +1 -1
  48. metadata +27 -25
  49. data/lib/google/cloud/bigtable/table/column_family_map.rb +0 -70
@@ -26,6 +26,7 @@ require "google/cloud/bigtable/row_filter/condition_filter"
26
26
  module Google
27
27
  module Cloud
28
28
  module Bigtable
29
+ ##
29
30
  # # RowFilter
30
31
  #
31
32
  # Takes a row as input and produces an alternate view of the row based on
@@ -145,6 +146,7 @@ module Google
145
146
 
146
147
  private_constant :PASS, :BLOCK, :SINK, :STRIP_VALUE
147
148
 
149
+ ##
148
150
  # Creates a chain filter instance.
149
151
  #
150
152
  # A chain RowFilter that sends rows through several RowFilters in sequence.
@@ -166,7 +168,7 @@ module Google
166
168
  # chain.strip_value
167
169
  #
168
170
  # # OR
169
- # chain.key("user-*).strip_value
171
+ # chain.key("user-*").strip_value
170
172
  #
171
173
  # @example Create complex chain filter.
172
174
  #
@@ -176,12 +178,13 @@ module Google
176
178
  # chain_1.label("users").qualifier("name").cells_per_row(5)
177
179
  #
178
180
  # # Add to main chain filter
179
- # chain.chain(chain_1).value("xyz*).key("user-*")
181
+ # chain.chain(chain_1).value("xyz*").key("user-*")
180
182
  #
181
183
  def self.chain
182
184
  ChainFilter.new
183
185
  end
184
186
 
187
+ ##
185
188
  # Creates an interleave filter.
186
189
  #
187
190
  # A RowFilter that sends each row to each of several component
@@ -224,7 +227,7 @@ module Google
224
227
  # interleave.sink
225
228
  #
226
229
  # # OR
227
- # interleave.key("user-*).sink
230
+ # interleave.key("user-*").sink
228
231
  #
229
232
  # @example Create complex interleave filter.
230
233
  #
@@ -234,12 +237,13 @@ module Google
234
237
  # chain_1.label("users").qualifier("name").cells_per_row(5)
235
238
  #
236
239
  # # Add to main chain filter
237
- # interleave.chain(chain_1).value("xyz*).key("user-*")
240
+ # interleave.chain(chain_1).value("xyz*").key("user-*")
238
241
  #
239
242
  def self.interleave
240
243
  InterleaveFilter.new
241
244
  end
242
245
 
246
+ ##
243
247
  # Creates a condition filter instance.
244
248
  #
245
249
  # A RowFilter that evaluates one of two possible RowFilters, depending on
@@ -267,9 +271,10 @@ module Google
267
271
  # condition.on_match(label).otherwise(strip_value)
268
272
  #
269
273
  def self.condition predicate
270
- ConditionFilter.new(predicate)
274
+ ConditionFilter.new predicate
271
275
  end
272
276
 
277
+ ##
273
278
  # Creates a pass filter instance.
274
279
  #
275
280
  # Matches all cells, regardless of input. Functionally equivalent to
@@ -285,6 +290,7 @@ module Google
285
290
  PASS
286
291
  end
287
292
 
293
+ ##
288
294
  # Creates a block-all filter instance.
289
295
  #
290
296
  # Does not match any cells, regardless of input. Useful for temporarily
@@ -300,6 +306,7 @@ module Google
300
306
  BLOCK
301
307
  end
302
308
 
309
+ ##
303
310
  # Creates a sink filter instance.
304
311
  #
305
312
  # Outputs all cells directly to the output of the read rather than to any
@@ -315,6 +322,7 @@ module Google
315
322
  SINK
316
323
  end
317
324
 
325
+ ##
318
326
  # Creates a strip value filter instance.
319
327
  #
320
328
  # Replaces each cell's value with an empty string.
@@ -329,6 +337,7 @@ module Google
329
337
  STRIP_VALUE
330
338
  end
331
339
 
340
+ ##
332
341
  # Creates a key filter instance to match a row key using a regular expression.
333
342
  #
334
343
  # Matches only cells from rows whose row keys satisfy the given RE2 regex. In
@@ -350,9 +359,10 @@ module Google
350
359
  # filter = Google::Cloud::Bigtable::RowFilter.key("user-.*")
351
360
  #
352
361
  def self.key regex
353
- SimpleFilter.new.key(regex)
362
+ SimpleFilter.new.key regex
354
363
  end
355
364
 
365
+ ##
356
366
  # Creates a sample probability filter instance.
357
367
  #
358
368
  # Matches all cells from a row with probability p, and matches no cells
@@ -367,9 +377,10 @@ module Google
367
377
  # filter = Google::Cloud::Bigtable::RowFilter.sample(0.5)
368
378
  #
369
379
  def self.sample probability
370
- SimpleFilter.new.sample(probability)
380
+ SimpleFilter.new.sample probability
371
381
  end
372
382
 
383
+ ##
373
384
  # Creates a family name match filter using a regular expression.
374
385
  #
375
386
  # Matches only cells from columns whose families satisfy the given RE2
@@ -390,9 +401,10 @@ module Google
390
401
  # filter = Google::Cloud::Bigtable::RowFilter.family("cf-.*")
391
402
  #
392
403
  def self.family regex
393
- SimpleFilter.new.family(regex)
404
+ SimpleFilter.new.family regex
394
405
  end
395
406
 
407
+ ##
396
408
  # Creates a column qualifier match filter using a regular expression.
397
409
  #
398
410
  # Matches only cells from columns whose qualifiers satisfy the given RE2
@@ -413,9 +425,10 @@ module Google
413
425
  # filter = Google::Cloud::Bigtable::RowFilter.qualifier("user-name.*")
414
426
  #
415
427
  def self.qualifier regex
416
- SimpleFilter.new.qualifier(regex)
428
+ SimpleFilter.new.qualifier regex
417
429
  end
418
430
 
431
+ ##
419
432
  # Creates a value match filter using a regular expression.
420
433
  #
421
434
  # Matches only cells with values that satisfy the given regular expression.
@@ -435,9 +448,10 @@ module Google
435
448
  # filter = Google::Cloud::Bigtable::RowFilter.value("abc.*")
436
449
  #
437
450
  def self.value regex
438
- SimpleFilter.new.value(regex)
451
+ SimpleFilter.new.value regex
439
452
  end
440
453
 
454
+ ##
441
455
  # Creates a label filter instance to apply a label based on the result of
442
456
  # read rows.
443
457
  #
@@ -462,9 +476,10 @@ module Google
462
476
  # filter = Google::Cloud::Bigtable::RowFilter.label("user-detail")
463
477
  #
464
478
  def self.label value
465
- SimpleFilter.new.label(value)
479
+ SimpleFilter.new.label value
466
480
  end
467
481
 
482
+ ##
468
483
  # Creates a cell-per-row-offset filter instance to skip first N cells.
469
484
  #
470
485
  # Skips the first N cells of each row, matching all subsequent cells.
@@ -479,9 +494,10 @@ module Google
479
494
  # filter = Google::Cloud::Bigtable::RowFilter.cells_per_row_offset(3)
480
495
  #
481
496
  def self.cells_per_row_offset offset
482
- SimpleFilter.new.cells_per_row_offset(offset)
497
+ SimpleFilter.new.cells_per_row_offset offset
483
498
  end
484
499
 
500
+ ##
485
501
  # Create a cells-per-row limit filter instance.
486
502
  #
487
503
  # Matches only the first N cells of each row.
@@ -496,9 +512,10 @@ module Google
496
512
  # filter = Google::Cloud::Bigtable::RowFilter.cells_per_row(5)
497
513
  #
498
514
  def self.cells_per_row limit
499
- SimpleFilter.new.cells_per_row(limit)
515
+ SimpleFilter.new.cells_per_row limit
500
516
  end
501
517
 
518
+ ##
502
519
  # Creates cells-per-column filter instance.
503
520
  #
504
521
  # Matches only the most recent N cells within each column.
@@ -513,9 +530,10 @@ module Google
513
530
  # filter = Google::Cloud::Bigtable::RowFilter.cells_per_column(5)
514
531
  #
515
532
  def self.cells_per_column limit
516
- SimpleFilter.new.cells_per_column(limit)
533
+ SimpleFilter.new.cells_per_column limit
517
534
  end
518
535
 
536
+ ##
519
537
  # Creates a timestamp-range filter instance.
520
538
  #
521
539
  # Matches only cells with timestamps within the given range.
@@ -540,9 +558,10 @@ module Google
540
558
  # filter = Google::Cloud::Bigtable::RowFilter.timestamp_range(to: to)
541
559
  #
542
560
  def self.timestamp_range from: nil, to: nil
543
- SimpleFilter.new.timestamp_range(from, to)
561
+ SimpleFilter.new.timestamp_range from, to
544
562
  end
545
563
 
564
+ ##
546
565
  # Creates a value-range filter instance.
547
566
  #
548
567
  # Matches only cells with values that fall within the given range.
@@ -559,19 +578,28 @@ module Google
559
578
  # @return [Google::Cloud::Bigtable::RowFilter::SimpleFilter]
560
579
  #
561
580
  # @example Start to end range
581
+ # require "google/cloud/bigtable"
562
582
  #
563
- # range = Google::Cloud::Bigtable::ValueRange.from("abc").to("xyz")
583
+ # bigtable = Google::Cloud::Bigtable.new
584
+ # table = bigtable.table("my-instance", "my-table")
585
+ #
586
+ # range = table.new_value_range.from("value-001", inclusive: false)
564
587
  # filter = Google::Cloud::Bigtable::RowFilter.value_range(range)
565
588
  #
566
589
  # @example Start exlusive to infinite end range
590
+ # require "google/cloud/bigtable"
591
+ #
592
+ # bigtable = Google::Cloud::Bigtable.new
593
+ # table = bigtable.table("my-instance", "my-table")
567
594
  #
568
- # range = Google::Cloud::Bigtable::ValueRange.from("abc", inclusive: false)
595
+ # range = table.new_value_range.from("value-001", inclusive: false)
569
596
  # filter = Google::Cloud::Bigtable::RowFilter.value_range(range)
570
597
  #
571
598
  def self.value_range range
572
- SimpleFilter.new.value_range(range)
599
+ SimpleFilter.new.value_range range
573
600
  end
574
601
 
602
+ ##
575
603
  # Creates a column-range filter instance.
576
604
  #
577
605
  # Matches only cells from columns within the given range.
@@ -580,13 +608,14 @@ module Google
580
608
  # @return [Google::Cloud::Bigtable::RowFilter::SimpleFilter]
581
609
  #
582
610
  # @example
611
+ # require "google/cloud/bigtable"
583
612
  #
584
- # range = Google::Cloud::Bigtable::ColumnRange.new(cf).from("field0").to("field5")
613
+ # range = Google::Cloud::Bigtable::ColumnRange.new("cf").from("field0").to("field5")
585
614
  #
586
615
  # filter = Google::Cloud::Bigtable::RowFilter.column_range(range)
587
616
  #
588
617
  def self.column_range range
589
- SimpleFilter.new.column_range(range)
618
+ SimpleFilter.new.column_range range
590
619
  end
591
620
  end
592
621
  end
@@ -19,6 +19,7 @@ module Google
19
19
  module Cloud
20
20
  module Bigtable
21
21
  module RowFilter
22
+ ##
22
23
  # # ChainFilter
23
24
  #
24
25
  # A RowFilter that sends rows through several RowFilters in sequence.
@@ -37,9 +38,10 @@ module Google
37
38
  # @private
38
39
  # Creates an instance of a chain filter.
39
40
  def initialize
40
- @grpc = Google::Bigtable::V2::RowFilter::Chain.new
41
+ @filters = []
41
42
  end
42
43
 
44
+ ##
43
45
  # Adds a chain filter instance.
44
46
  #
45
47
  # A Chain RowFilter that sends rows through several RowFilters in sequence.
@@ -66,12 +68,11 @@ module Google
66
68
  # filter = Google::Cloud::Bigtable::RowFilter.chain.chain(chain_1)
67
69
  #
68
70
  def chain filter
69
- unless filter.instance_of?(ChainFilter)
70
- raise RowFilterError, "Filter type must be ChainFilter"
71
- end
72
- add(filter)
71
+ raise RowFilterError, "Filter type must be ChainFilter" unless filter.instance_of? ChainFilter
72
+ add filter
73
73
  end
74
74
 
75
+ ##
75
76
  # Add interleave filter.
76
77
  #
77
78
  # A RowFilter that sends each row to each of several component
@@ -119,12 +120,11 @@ module Google
119
120
  # chain = Google::Cloud::Bigtable::RowFilter.chain.interleave(interleave)
120
121
  #
121
122
  def interleave filter
122
- unless filter.instance_of?(InterleaveFilter)
123
- raise RowFilterError, "Filter type must be InterleaveFilter"
124
- end
125
- add(filter)
123
+ raise RowFilterError, "Filter type must be InterleaveFilter" unless filter.instance_of? InterleaveFilter
124
+ add filter
126
125
  end
127
126
 
127
+ ##
128
128
  # Adds a condition filter instance.
129
129
  #
130
130
  # A RowFilter that evaluates one of two possible RowFilters, depending on
@@ -148,17 +148,17 @@ module Google
148
148
  # label = Google::Cloud::Bigtable::RowFilter.label("user")
149
149
  # strip_value = Google::Cloud::Bigtable::RowFilter.strip_value
150
150
  #
151
- # condition_filter = Google::Cloud::Bigtable::RowFilter.condition(predicate).on_match(label).otherwise(strip_value)
151
+ # condition_filter = Google::Cloud::Bigtable::RowFilter.
152
+ # condition(predicate).on_match(label).otherwise(strip_value)
152
153
  #
153
154
  # filter = Google::Cloud::Bigtable::RowFilter.chain.condition(condition_filter)
154
155
  #
155
156
  def condition filter
156
- unless filter.instance_of?(ConditionFilter)
157
- raise RowFilterError, "Filter type must be ConditionFilter"
158
- end
159
- add(filter)
157
+ raise RowFilterError, "Filter type must be ConditionFilter" unless filter.instance_of? ConditionFilter
158
+ add filter
160
159
  end
161
160
 
161
+ ##
162
162
  # Adds a pass filter instance.
163
163
  #
164
164
  # Matches all cells, regardless of input. Functionally equivalent to
@@ -172,9 +172,10 @@ module Google
172
172
  # filter = Google::Cloud::Bigtable::RowFilter.chain.pass
173
173
  #
174
174
  def pass
175
- add(RowFilter.pass)
175
+ add RowFilter.pass
176
176
  end
177
177
 
178
+ ##
178
179
  # Adds a block-all filter instance.
179
180
  #
180
181
  # Does not match any cells, regardless of input. Useful for temporarily
@@ -188,9 +189,10 @@ module Google
188
189
  # filter = Google::Cloud::Bigtable::RowFilter.chain.block
189
190
  #
190
191
  def block
191
- add(RowFilter.block)
192
+ add RowFilter.block
192
193
  end
193
194
 
195
+ ##
194
196
  # Adds a sink filter instance.
195
197
  #
196
198
  # Outputs all cells directly to the output of the read rather than to any parent filter.
@@ -203,9 +205,10 @@ module Google
203
205
  # filter = Google::Cloud::Bigtable::RowFilter.chain.sink
204
206
  #
205
207
  def sink
206
- add(RowFilter.sink)
208
+ add RowFilter.sink
207
209
  end
208
210
 
211
+ ##
209
212
  # Adds a strip-value filter instance.
210
213
  #
211
214
  # Replaces each cell's value with an empty string.
@@ -218,9 +221,10 @@ module Google
218
221
  # filter = Google::Cloud::Bigtable::RowFilter.chain.strip_value
219
222
  #
220
223
  def strip_value
221
- add(RowFilter.strip_value)
224
+ add RowFilter.strip_value
222
225
  end
223
226
 
227
+ ##
224
228
  # Adds a key-filter instance to match keys using a regular expression.
225
229
  #
226
230
  # Matches only cells from rows whose keys satisfy the given RE2 regex. In
@@ -243,9 +247,10 @@ module Google
243
247
  # filter = Google::Cloud::Bigtable::RowFilter.chain.key("user-*")
244
248
  #
245
249
  def key regex
246
- add(RowFilter.key(regex))
250
+ add RowFilter.key(regex)
247
251
  end
248
252
 
253
+ ##
249
254
  # Adds a sample-probability filter instance.
250
255
  #
251
256
  # Matches all cells from a row with probability p, and matches no cells
@@ -261,9 +266,10 @@ module Google
261
266
  # filter = Google::Cloud::Bigtable::RowFilter.chain.sample(0.5)
262
267
  #
263
268
  def sample probability
264
- add(RowFilter.sample(probability))
269
+ add RowFilter.sample(probability)
265
270
  end
266
271
 
272
+ ##
267
273
  # Adds a family-name-match filter using a regular expression.
268
274
  #
269
275
  # Matches only cells from columns whose families satisfy the given RE2
@@ -285,9 +291,10 @@ module Google
285
291
  # filter = Google::Cloud::Bigtable::RowFilter.chain.family("cf-*")
286
292
  #
287
293
  def family regex
288
- add(RowFilter.family(regex))
294
+ add RowFilter.family(regex)
289
295
  end
290
296
 
297
+ ##
291
298
  # Add a column-qualifier-match filter using a regular expression.
292
299
  #
293
300
  # Matches only cells from columns whose qualifiers satisfy the given RE2
@@ -309,9 +316,10 @@ module Google
309
316
  # filter = Google::Cloud::Bigtable::RowFilter.chain.qualifier("user-name*")
310
317
  #
311
318
  def qualifier regex
312
- add(RowFilter.qualifier(regex))
319
+ add RowFilter.qualifier(regex)
313
320
  end
314
321
 
322
+ ##
315
323
  # Adds a value-match filter using a regular expression.
316
324
  #
317
325
  # Matches only cells with values that satisfy the given regular expression.
@@ -332,9 +340,10 @@ module Google
332
340
  # filter = Google::Cloud::Bigtable::RowFilter.chain.value("abc*")
333
341
  #
334
342
  def value regex
335
- add(RowFilter.value(regex))
343
+ add RowFilter.value(regex)
336
344
  end
337
345
 
346
+ ##
338
347
  # Adds a label filter instance to apply a label based on the result of read rows.
339
348
  #
340
349
  # Applies the given label to all cells in the output row. This allows
@@ -359,9 +368,10 @@ module Google
359
368
  # filter = Google::Cloud::Bigtable::RowFilter.chain.label("user-detail")
360
369
  #
361
370
  def label value
362
- add(RowFilter.label(value))
371
+ add RowFilter.label(value)
363
372
  end
364
373
 
374
+ ##
365
375
  # Adds a cell-per-row-offset filter instance to skip the first N cells.
366
376
  #
367
377
  # Skips the first N cells of each row, matching all subsequent cells.
@@ -377,9 +387,10 @@ module Google
377
387
  # filter = Google::Cloud::Bigtable::RowFilter.chain.cells_per_row_offset(3)
378
388
  #
379
389
  def cells_per_row_offset offset
380
- add(RowFilter.cells_per_row_offset(offset))
390
+ add RowFilter.cells_per_row_offset(offset)
381
391
  end
382
392
 
393
+ ##
383
394
  # Adds a cells-per-row-limit filter instance.
384
395
  #
385
396
  # Matches only the first N cells of each row.
@@ -395,9 +406,10 @@ module Google
395
406
  # filter = Google::Cloud::Bigtable::RowFilter.chain.cells_per_row(5)
396
407
  #
397
408
  def cells_per_row limit
398
- add(RowFilter.cells_per_row(limit))
409
+ add RowFilter.cells_per_row(limit)
399
410
  end
400
411
 
412
+ ##
401
413
  # Adds a cells-per-column filter instance.
402
414
  #
403
415
  # Matches only the most recent N cells within each column. For example,
@@ -416,9 +428,10 @@ module Google
416
428
  # filter = Google::Cloud::Bigtable::RowFilter.chain.cells_per_column(5)
417
429
  #
418
430
  def cells_per_column limit
419
- add(RowFilter.cells_per_column(limit))
431
+ add RowFilter.cells_per_column(limit)
420
432
  end
421
433
 
434
+ ##
422
435
  # Adds a timestamp-range filter instance.
423
436
  #
424
437
  # Matches only cells with timestamps within the given range.
@@ -440,9 +453,10 @@ module Google
440
453
  # filter = Google::Cloud::Bigtable::RowFilter.chain.timestamp_range(from: from, to: to)
441
454
  #
442
455
  def timestamp_range from: nil, to: nil
443
- add(RowFilter.timestamp_range(from: from, to: to))
456
+ add RowFilter.timestamp_range(from: from, to: to)
444
457
  end
445
458
 
459
+ ##
446
460
  # Adds a value-range filter instance.
447
461
  #
448
462
  # Matches only cells with values that fall within the given range.
@@ -451,26 +465,36 @@ module Google
451
465
  # option inclusive/exclusive options
452
466
  #
453
467
  # * The value at which to start the range. If neither field is set, interpreted as an empty string, inclusive.
454
- # * The value at which to end the range. If neither field is set, interpreted as the infinite string, exclusive.
468
+ # * The value at which to end the range. If neither field is set, interpreted as the infinite string,
469
+ # exclusive.
455
470
  #
456
471
  # @param range [Google::Cloud::Bigtable::ValueRange]
457
472
  # @return [Google::Cloud::Bigtable::RowFilter::ChainFilter]
458
473
  # `self` instance of chain filter.
459
474
  #
460
475
  # @example Start to end range
476
+ # require "google/cloud/bigtable"
461
477
  #
462
- # range = Google::Cloud::Bigtable::ValueRange.from("abc").to('xyz')
478
+ # bigtable = Google::Cloud::Bigtable.new
479
+ # table = bigtable.table("my-instance", "my-table")
480
+ #
481
+ # range = table.new_value_range.from("value-001").to("value-005")
463
482
  # filter = Google::Cloud::Bigtable::RowFilter.chain.value_range(range)
464
483
  #
465
- # @example Start exlusive to infinite end range
484
+ # @example Start exclusive to infinite end range
485
+ # require "google/cloud/bigtable"
486
+ #
487
+ # bigtable = Google::Cloud::Bigtable.new
488
+ # table = bigtable.table("my-instance", "my-table")
466
489
  #
467
- # range = Google::Cloud::Bigtable::ValueRange.from("abc", inclusive: false)
490
+ # range = table.new_value_range.from("value-001", inclusive: false)
468
491
  # filter = Google::Cloud::Bigtable::RowFilter.chain.value_range(range)
469
492
  #
470
493
  def value_range range
471
- add(RowFilter.value_range(range))
494
+ add RowFilter.value_range(range)
472
495
  end
473
496
 
497
+ ##
474
498
  # Adds a column-range filter instance.
475
499
  #
476
500
  # Matches only cells from columns within the given range.
@@ -480,16 +504,18 @@ module Google
480
504
  # `self` instance of chain filter.
481
505
  #
482
506
  # @example
507
+ # require "google/cloud/bigtable"
483
508
  #
484
- # range = Google::Cloud::Bigtable::ColumnRange.new(cf).from("field0").to('field5')
509
+ # range = Google::Cloud::Bigtable::ColumnRange.new("cf").from("field0").to('field5')
485
510
  #
486
511
  # filter = Google::Cloud::Bigtable::RowFilter.chain.column_range(range)
487
512
  #
488
513
  def column_range range
489
- add(RowFilter.column_range(range))
514
+ add RowFilter.column_range(range)
490
515
  end
491
516
 
492
- # Gets the number of filters in the chain filter.
517
+ ##
518
+ # Gets the number of filters in the chain.
493
519
  #
494
520
  # @return [Integer]
495
521
  #
@@ -499,15 +525,16 @@ module Google
499
525
  # filter.length # 2
500
526
  #
501
527
  def length
502
- @grpc.filters.length
528
+ @filters.length
503
529
  end
504
530
 
505
- # Gets the list of filters.
531
+ ##
532
+ # Returns a frozen copy of the filters array.
506
533
  #
507
- # @return [Array<Google::Bigtable::V2::RowFilter>]
534
+ # @return [Array<SimpleFilter|ChainFilter|InterleaveFilter|ConditionFilter>]
508
535
  #
509
536
  def filters
510
- @grpc.filters
537
+ @filters.dup.freeze
511
538
  end
512
539
 
513
540
  # @private
@@ -517,10 +544,11 @@ module Google
517
544
  # @return [Google::Bigtable::V2::RowFilter]
518
545
  #
519
546
  def to_grpc
520
- Google::Bigtable::V2::RowFilter.new(chain: @grpc)
547
+ Google::Bigtable::V2::RowFilter.new(
548
+ chain: Google::Bigtable::V2::RowFilter::Chain.new(filters: @filters.map(&:to_grpc))
549
+ )
521
550
  end
522
551
 
523
-
524
552
  private
525
553
 
526
554
  # @private
@@ -529,7 +557,7 @@ module Google
529
557
  # @param filter [SimpleFilter, ChainFilter, InterleaveFilter, ConditionFilter]
530
558
  #
531
559
  def add filter
532
- @grpc.filters << filter.to_grpc
560
+ @filters << filter
533
561
  self
534
562
  end
535
563
  end