google-cloud-bigtable 1.3.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 (103) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +19 -0
  3. data/AUTHENTICATION.md +177 -0
  4. data/CHANGELOG.md +223 -0
  5. data/CODE_OF_CONDUCT.md +40 -0
  6. data/CONTRIBUTING.md +188 -0
  7. data/EMULATOR.md +30 -0
  8. data/LICENSE +201 -0
  9. data/LOGGING.md +32 -0
  10. data/OVERVIEW.md +400 -0
  11. data/TROUBLESHOOTING.md +31 -0
  12. data/lib/google-cloud-bigtable.rb +171 -0
  13. data/lib/google/bigtable/admin/v2/bigtable_instance_admin_pb.rb +145 -0
  14. data/lib/google/bigtable/admin/v2/bigtable_instance_admin_services_pb.rb +90 -0
  15. data/lib/google/bigtable/admin/v2/bigtable_table_admin_pb.rb +208 -0
  16. data/lib/google/bigtable/admin/v2/bigtable_table_admin_services_pb.rb +154 -0
  17. data/lib/google/bigtable/admin/v2/common_pb.rb +30 -0
  18. data/lib/google/bigtable/admin/v2/instance_pb.rb +74 -0
  19. data/lib/google/bigtable/admin/v2/table_pb.rb +127 -0
  20. data/lib/google/bigtable/v2/bigtable_pb.rb +113 -0
  21. data/lib/google/bigtable/v2/bigtable_services_pb.rb +68 -0
  22. data/lib/google/bigtable/v2/data_pb.rb +156 -0
  23. data/lib/google/cloud/bigtable.rb +184 -0
  24. data/lib/google/cloud/bigtable/admin.rb +202 -0
  25. data/lib/google/cloud/bigtable/admin/credentials.rb +27 -0
  26. data/lib/google/cloud/bigtable/admin/v2.rb +223 -0
  27. data/lib/google/cloud/bigtable/admin/v2/bigtable_instance_admin_client.rb +1451 -0
  28. data/lib/google/cloud/bigtable/admin/v2/bigtable_instance_admin_client_config.json +139 -0
  29. data/lib/google/cloud/bigtable/admin/v2/bigtable_table_admin_client.rb +1734 -0
  30. data/lib/google/cloud/bigtable/admin/v2/bigtable_table_admin_client_config.json +163 -0
  31. data/lib/google/cloud/bigtable/admin/v2/credentials.rb +51 -0
  32. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/bigtable_instance_admin.rb +297 -0
  33. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/bigtable_table_admin.rb +587 -0
  34. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/instance.rb +193 -0
  35. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/table.rb +303 -0
  36. data/lib/google/cloud/bigtable/admin/v2/doc/google/iam/v1/iam_policy.rb +64 -0
  37. data/lib/google/cloud/bigtable/admin/v2/doc/google/iam/v1/options.rb +33 -0
  38. data/lib/google/cloud/bigtable/admin/v2/doc/google/iam/v1/policy.rb +151 -0
  39. data/lib/google/cloud/bigtable/admin/v2/doc/google/longrunning/operations.rb +51 -0
  40. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/any.rb +131 -0
  41. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/duration.rb +91 -0
  42. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/empty.rb +29 -0
  43. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/field_mask.rb +222 -0
  44. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/timestamp.rb +113 -0
  45. data/lib/google/cloud/bigtable/admin/v2/doc/google/rpc/status.rb +39 -0
  46. data/lib/google/cloud/bigtable/admin/v2/doc/google/type/expr.rb +45 -0
  47. data/lib/google/cloud/bigtable/app_profile.rb +439 -0
  48. data/lib/google/cloud/bigtable/app_profile/job.rb +99 -0
  49. data/lib/google/cloud/bigtable/app_profile/list.rb +165 -0
  50. data/lib/google/cloud/bigtable/backup.rb +324 -0
  51. data/lib/google/cloud/bigtable/backup/job.rb +87 -0
  52. data/lib/google/cloud/bigtable/backup/list.rb +167 -0
  53. data/lib/google/cloud/bigtable/chunk_processor.rb +241 -0
  54. data/lib/google/cloud/bigtable/cluster.rb +390 -0
  55. data/lib/google/cloud/bigtable/cluster/job.rb +88 -0
  56. data/lib/google/cloud/bigtable/cluster/list.rb +171 -0
  57. data/lib/google/cloud/bigtable/column_family.rb +73 -0
  58. data/lib/google/cloud/bigtable/column_family_map.rb +426 -0
  59. data/lib/google/cloud/bigtable/column_range.rb +194 -0
  60. data/lib/google/cloud/bigtable/convert.rb +83 -0
  61. data/lib/google/cloud/bigtable/credentials.rb +25 -0
  62. data/lib/google/cloud/bigtable/errors.rb +38 -0
  63. data/lib/google/cloud/bigtable/gc_rule.rb +334 -0
  64. data/lib/google/cloud/bigtable/instance.rb +935 -0
  65. data/lib/google/cloud/bigtable/instance/cluster_map.rb +74 -0
  66. data/lib/google/cloud/bigtable/instance/job.rb +98 -0
  67. data/lib/google/cloud/bigtable/instance/list.rb +164 -0
  68. data/lib/google/cloud/bigtable/longrunning_job.rb +122 -0
  69. data/lib/google/cloud/bigtable/mutation_entry.rb +256 -0
  70. data/lib/google/cloud/bigtable/mutation_operations.rb +357 -0
  71. data/lib/google/cloud/bigtable/policy.rb +167 -0
  72. data/lib/google/cloud/bigtable/project.rb +471 -0
  73. data/lib/google/cloud/bigtable/read_modify_write_rule.rb +134 -0
  74. data/lib/google/cloud/bigtable/read_operations.rb +328 -0
  75. data/lib/google/cloud/bigtable/routing_policy.rb +172 -0
  76. data/lib/google/cloud/bigtable/row.rb +136 -0
  77. data/lib/google/cloud/bigtable/row_filter.rb +639 -0
  78. data/lib/google/cloud/bigtable/row_filter/chain_filter.rb +590 -0
  79. data/lib/google/cloud/bigtable/row_filter/condition_filter.rb +114 -0
  80. data/lib/google/cloud/bigtable/row_filter/interleave_filter.rb +621 -0
  81. data/lib/google/cloud/bigtable/row_filter/simple_filter.rb +287 -0
  82. data/lib/google/cloud/bigtable/row_range.rb +179 -0
  83. data/lib/google/cloud/bigtable/rows_mutator.rb +113 -0
  84. data/lib/google/cloud/bigtable/rows_reader.rb +200 -0
  85. data/lib/google/cloud/bigtable/sample_row_key.rb +85 -0
  86. data/lib/google/cloud/bigtable/service.rb +913 -0
  87. data/lib/google/cloud/bigtable/status.rb +76 -0
  88. data/lib/google/cloud/bigtable/table.rb +686 -0
  89. data/lib/google/cloud/bigtable/table/cluster_state.rb +125 -0
  90. data/lib/google/cloud/bigtable/table/list.rb +154 -0
  91. data/lib/google/cloud/bigtable/table/restore_job.rb +117 -0
  92. data/lib/google/cloud/bigtable/v2.rb +146 -0
  93. data/lib/google/cloud/bigtable/v2/bigtable_client.rb +591 -0
  94. data/lib/google/cloud/bigtable/v2/bigtable_client_config.json +83 -0
  95. data/lib/google/cloud/bigtable/v2/credentials.rb +46 -0
  96. data/lib/google/cloud/bigtable/v2/doc/google/bigtable/v2/bigtable.rb +290 -0
  97. data/lib/google/cloud/bigtable/v2/doc/google/bigtable/v2/data.rb +493 -0
  98. data/lib/google/cloud/bigtable/v2/doc/google/protobuf/any.rb +131 -0
  99. data/lib/google/cloud/bigtable/v2/doc/google/protobuf/wrappers.rb +34 -0
  100. data/lib/google/cloud/bigtable/v2/doc/google/rpc/status.rb +39 -0
  101. data/lib/google/cloud/bigtable/value_range.rb +181 -0
  102. data/lib/google/cloud/bigtable/version.rb +22 -0
  103. metadata +337 -0
@@ -0,0 +1,134 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2018 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+
18
+ module Google
19
+ module Cloud
20
+ module Bigtable
21
+ ##
22
+ # # ReadModifyWriteRule
23
+ #
24
+ # Specifies an atomic read/modify/write operation on the latest value of the
25
+ # specified column.
26
+ #
27
+ # @example Append value rule
28
+ # rule = Google::Cloud::Bigtable::ReadModifyWriteRule.append(
29
+ # "cf", "field01", "append-xyz"
30
+ # )
31
+ #
32
+ # @example increment value rule
33
+ # rule = Google::Cloud::Bigtable::ReadModifyWriteRule.increment(
34
+ # "cf", "field01", 1
35
+ # )
36
+ #
37
+ class ReadModifyWriteRule
38
+ # @private
39
+ # Creates an instance of ReadModifyWriteRule
40
+ #
41
+ # @param family [String]
42
+ # The name of the family to which the read/modify/write should be applied.
43
+ # @param qualifier [String]
44
+ # The qualifier of the column to which the read/modify/write should be applied.
45
+ #
46
+ def initialize family, qualifier
47
+ @grpc = Google::Bigtable::V2::ReadModifyWriteRule.new
48
+ @grpc.family_name = family
49
+ @grpc.column_qualifier = qualifier
50
+ end
51
+
52
+ ##
53
+ # Creates an instance of an append-value rule.
54
+ #
55
+ # @param family [String]
56
+ # The name of the family to which the read/modify/write should be applied.
57
+ # @param qualifier [String]
58
+ # The qualifier of the column to which the read/modify/write should be applied.
59
+ # @param value [String]
60
+ # Rule specifying that `append_value` be appended to the existing value.
61
+ # If the targeted cell is unset, it will be treated as if it contains an empty string.
62
+ # @return [Google::Cloud::Bigtable::ReadModifyWriteRule]
63
+ #
64
+ # @example Append value rule
65
+ # rule = Google::Cloud::Bigtable::ReadModifyWriteRule.append(
66
+ # "cf", "field01", "append-xyz"
67
+ # )
68
+ #
69
+ def self.append family, qualifier, value
70
+ rule = new family, qualifier
71
+ rule.append value
72
+ rule
73
+ end
74
+
75
+ ##
76
+ # Creates an instance of an increment-amount rule.
77
+ #
78
+ # @param family [String]
79
+ # The name of the family to which the read/modify/write should be applied.
80
+ # @param qualifier [String]
81
+ # The qualifier of the column to which the read/modify/write should be applied.
82
+ # @param amount [String]
83
+ # Rule specifying that `increment_amount` be added to the existing value.
84
+ # If the targeted cell is unset, it will be treated as if it contains a zero.
85
+ # Otherwise, the targeted cell must contain an 8-byte value (interpreted
86
+ # as a 64-bit big-endian signed integer), or the entire request will fail.
87
+ # @return [Google::Cloud::Bigtable::ReadModifyWriteRule]
88
+ #
89
+ # @example
90
+ # rule = Google::Cloud::Bigtable::ReadModifyWriteRule.increment(
91
+ # "cf", "field01", 1
92
+ # )
93
+ #
94
+ def self.increment family, qualifier, amount
95
+ rule = new family, qualifier
96
+ rule.increment amount
97
+ rule
98
+ end
99
+
100
+ ##
101
+ # Sets the append value.
102
+ #
103
+ # @param value [String]
104
+ # @return [Google::Cloud::Bigtable::ReadModifyWriteRule]
105
+ #
106
+ def append value
107
+ @grpc.append_value = value
108
+ self
109
+ end
110
+
111
+ ##
112
+ # Sets the increment amount.
113
+ #
114
+ # @param amount [Integer]
115
+ # @return [Google::Cloud::Bigtable::ReadModifyWriteRule]
116
+ #
117
+ def increment amount
118
+ @grpc.increment_amount = amount
119
+ self
120
+ end
121
+
122
+ # @private
123
+ #
124
+ # Get gRPC protobuf instance.
125
+ #
126
+ # @return [Google::Bigtable::V2::ReadModifyWriteRule]
127
+ #
128
+ def to_grpc
129
+ @grpc
130
+ end
131
+ end
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,328 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2018 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https:#www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+
18
+ require "google/cloud/bigtable/row"
19
+ require "google/cloud/bigtable/rows_reader"
20
+ require "google/cloud/bigtable/row_range"
21
+ require "google/cloud/bigtable/row_filter"
22
+ require "google/cloud/bigtable/sample_row_key"
23
+
24
+ module Google
25
+ module Cloud
26
+ module Bigtable
27
+ ##
28
+ # # ReadOperations
29
+ #
30
+ # Collection of read-rows APIs.
31
+ #
32
+ # * Sample row key
33
+ # * Read row
34
+ # * Read rows
35
+ #
36
+ module ReadOperations
37
+ ##
38
+ # Reads sample row keys.
39
+ #
40
+ # Returns a sample of row keys in the table. The returned row keys will
41
+ # delimit contiguous sections of the table of approximately equal size. The
42
+ # sections can be used to break up the data for distributed tasks like
43
+ # MapReduces.
44
+ #
45
+ # @yieldreturn [Google::Cloud::Bigtable::SampleRowKey]
46
+ # @return [:yields: sample_row_key]
47
+ # Yield block for each processed SampleRowKey.
48
+ #
49
+ # @example
50
+ # require "google/cloud/bigtable"
51
+ #
52
+ # bigtable = Google::Cloud::Bigtable.new
53
+ # table = bigtable.table("my-instance", "my-table")
54
+ #
55
+ # table.sample_row_keys.each do |sample_row_key|
56
+ # p sample_row_key.key # user00116
57
+ # p sample_row_key.offset # 805306368
58
+ # end
59
+ #
60
+ def sample_row_keys
61
+ return enum_for :sample_row_keys unless block_given?
62
+
63
+ response = service.sample_row_keys path, app_profile_id: @app_profile_id
64
+ response.each do |grpc|
65
+ yield SampleRowKey.from_grpc grpc
66
+ end
67
+ end
68
+
69
+ ##
70
+ # Reads rows.
71
+ #
72
+ # Streams back the contents of all requested rows in key order, optionally
73
+ # applying the same Reader filter to each.
74
+ # `read_rows`, `row_ranges` and `filter` if not specified, reads from all rows.
75
+ #
76
+ # See {Google::Cloud::Bigtable::RowFilter} for filter types.
77
+ #
78
+ # @param keys [Array<String>] List of row keys to be read. Optional.
79
+ # @param ranges [Google::Cloud::Bigtable::RowRange | Array<Google::Cloud::Bigtable::RowRange>]
80
+ # Row ranges array or single range. Optional.
81
+ # @param filter [SimpleFilter, ChainFilter, InterleaveFilter, ConditionFilter]
82
+ # The filter to apply to the contents of the specified row(s). If unset,
83
+ # reads the entries of each row. Optional.
84
+ # @param limit [Integer] Limit number of read rows count. Optional.
85
+ # The read will terminate after committing to N rows' worth of results.
86
+ # The default (zero) is to return all results.
87
+ # @return [Array<Google::Cloud::Bigtable::Row> | :yields: row]
88
+ # Array of row or yield block for each processed row.
89
+ # @example Read with limit.
90
+ # require "google/cloud/bigtable"
91
+ #
92
+ # bigtable = Google::Cloud::Bigtable.new
93
+ # table = bigtable.table("my-instance", "my-table")
94
+ #
95
+ # table.read_rows(limit: 10).each do |row|
96
+ # puts row
97
+ # end
98
+ #
99
+ # @example Read using row keys.
100
+ # require "google/cloud/bigtable"
101
+ #
102
+ # bigtable = Google::Cloud::Bigtable.new
103
+ # table = bigtable.table("my-instance", "my-table")
104
+ #
105
+ # table.read_rows(keys: ["user-1", "user-2"]).each do |row|
106
+ # puts row
107
+ # end
108
+ #
109
+ # @example Read using row ranges.
110
+ # require "google/cloud/bigtable"
111
+ #
112
+ # bigtable = Google::Cloud::Bigtable.new
113
+ # table = bigtable.table("my-instance", "my-table")
114
+ #
115
+ # range = table.new_row_range.between("user-1", "user-100")
116
+ #
117
+ # table.read_rows(ranges: range).each do |row|
118
+ # puts row
119
+ # end
120
+ #
121
+ # @example Read using filter.
122
+ # require "google/cloud/bigtable"
123
+ #
124
+ # bigtable = Google::Cloud::Bigtable.new
125
+ # table = bigtable.table("my-instance", "my-table")
126
+ #
127
+ # filter = table.filter.key("user-*")
128
+ # # OR
129
+ # # filter = Google::Cloud::Bigtable::RowFilter.key("user-*")
130
+ #
131
+ # table.read_rows(filter: filter).each do |row|
132
+ # puts row
133
+ # end
134
+ #
135
+ # @example Read using filter with limit.
136
+ # require "google/cloud/bigtable"
137
+ #
138
+ # bigtable = Google::Cloud::Bigtable.new
139
+ # table = bigtable.table("my-instance", "my-table")
140
+ #
141
+ # filter = table.filter.key("user-*")
142
+ # # OR
143
+ # # filter = Google::Cloud::Bigtable::RowFilter.key("user-*")
144
+ #
145
+ # table.read_rows(filter: filter, limit: 10).each do |row|
146
+ # puts row
147
+ # end
148
+ #
149
+ def read_rows keys: nil, ranges: nil, filter: nil, limit: nil, &block
150
+ return enum_for :read_rows, keys: keys, ranges: ranges, filter: filter, limit: limit unless block_given?
151
+
152
+ row_set = build_row_set keys, ranges
153
+ rows_limit = limit
154
+ rows_filter = filter.to_grpc if filter
155
+ rows_reader = RowsReader.new self
156
+
157
+ begin
158
+ rows_reader.read rows: row_set, filter: rows_filter, rows_limit: rows_limit, &block
159
+ rescue *RowsReader::RETRYABLE_ERRORS => e
160
+ rows_reader.retry_count += 1
161
+ raise Google::Cloud::Error.from_error(e) unless rows_reader.retryable?
162
+ rows_limit, row_set = rows_reader.retry_options limit, row_set
163
+ retry
164
+ end
165
+ end
166
+
167
+ ##
168
+ # Reads a single row by row key.
169
+ #
170
+ # @param key [String] Row key. Required.
171
+ # @param filter [Google::Cloud::Bigtable::RowFilter]
172
+ # The filter to apply to the contents of the specified row. Optional.
173
+ # @return [Google::Cloud::Bigtable::Row]
174
+ #
175
+ # @example
176
+ # require "google/cloud/bigtable"
177
+ #
178
+ # bigtable = Google::Cloud::Bigtable.new
179
+ # table = bigtable.table("my-instance", "my-table")
180
+ #
181
+ # row = table.read_row("user-1")
182
+ #
183
+ # @example Read row with filter.
184
+ # require "google/cloud/bigtable"
185
+ #
186
+ # bigtable = Google::Cloud::Bigtable.new
187
+ # table = bigtable.table("my-instance", "my-table")
188
+ #
189
+ # filter = Google::Cloud::Bigtable::RowFilter.cells_per_row(3)
190
+ #
191
+ # row = table.read_row("user-1", filter: filter)
192
+ #
193
+ def read_row key, filter: nil
194
+ read_rows(keys: [key], filter: filter).first
195
+ end
196
+
197
+ ##
198
+ # Creates a new instance of ValueRange.
199
+ #
200
+ # @return [Google::Cloud::Bigtable::ValueRange]
201
+ #
202
+ # @example
203
+ # require "google/cloud/bigtable"
204
+ #
205
+ # bigtable = Google::Cloud::Bigtable.new
206
+ # table = bigtable.table("my-instance", "my-table")
207
+ #
208
+ # range = table.new_value_range
209
+ # range.from("abc")
210
+ # range.to("xyz")
211
+ #
212
+ # # OR
213
+ # range = table.new_value_range.from("abc").to("xyz")
214
+ #
215
+ # @example With exclusive from range.
216
+ # require "google/cloud/bigtable"
217
+ #
218
+ # bigtable = Google::Cloud::Bigtable.new
219
+ # table = bigtable.table("my-instance", "my-table")
220
+ #
221
+ # range = table.new_value_range.from("abc", inclusive: false).to("xyz")
222
+ #
223
+ def new_value_range
224
+ Google::Cloud::Bigtable::ValueRange.new
225
+ end
226
+
227
+ ##
228
+ # Gets a new instance of ColumnRange.
229
+ #
230
+ # @param family [String] Column family name.
231
+ # @return [Google::Cloud::Bigtable::ColumnRange]
232
+ #
233
+ # @example
234
+ # require "google/cloud/bigtable"
235
+ #
236
+ # bigtable = Google::Cloud::Bigtable.new
237
+ # table = bigtable.table("my-instance", "my-table")
238
+ #
239
+ # range = table.new_column_range("test-family")
240
+ # range.from("abc")
241
+ # range.to("xyz")
242
+ #
243
+ # # OR
244
+ # range = table.new_column_range("test-family").from("key-1").to("key-5")
245
+ #
246
+ # @example With exclusive from range.
247
+ # require "google/cloud/bigtable"
248
+ #
249
+ # bigtable = Google::Cloud::Bigtable.new
250
+ # table = bigtable.table("my-instance", "my-table")
251
+ #
252
+ # range = table.new_column_range("test-family").from("key-1", inclusive: false).to("key-5")
253
+ #
254
+ def new_column_range family
255
+ Google::Cloud::Bigtable::ColumnRange.new family
256
+ end
257
+
258
+ ##
259
+ # Gets a new instance of RowRange.
260
+ #
261
+ # @return [Google::Cloud::Bigtable::RowRange]
262
+ #
263
+ # @example
264
+ # require "google/cloud/bigtable"
265
+ #
266
+ # bigtable = Google::Cloud::Bigtable.new
267
+ # table = bigtable.table("my-instance", "my-table")
268
+ #
269
+ # range = table.new_row_range
270
+ # range.from("abc")
271
+ # range.to("xyz")
272
+ #
273
+ # # OR
274
+ # range = table.new_row_range.from("key-1").to("key-5")
275
+ #
276
+ # @example With exclusive from range.
277
+ # require "google/cloud/bigtable"
278
+ #
279
+ # bigtable = Google::Cloud::Bigtable.new
280
+ # table = bigtable.table("my-instance", "my-table")
281
+ #
282
+ # range = table.new_row_range.from("key-1", inclusive: false).to("key-5")
283
+ #
284
+ def new_row_range
285
+ Google::Cloud::Bigtable::RowRange.new
286
+ end
287
+
288
+ ##
289
+ # Gets a row filter.
290
+ #
291
+ # @return [Google::Cloud::Bigtable::RowRange]
292
+ #
293
+ # @example
294
+ # require "google/cloud/bigtable"
295
+ #
296
+ # bigtable = Google::Cloud::Bigtable.new
297
+ # table = bigtable.table("my-instance", "my-table")
298
+ #
299
+ # filter = table.filter.key("user-*")
300
+ #
301
+ def filter
302
+ Google::Cloud::Bigtable::RowFilter
303
+ end
304
+
305
+ private
306
+
307
+ ##
308
+ # Builds a RowSet object from row keys and row ranges.
309
+ #
310
+ # @param row_keys [Array<String>]
311
+ # @param row_ranges [Google::Cloud::Bigtable::RowRange | Array<Google::Cloud::Bigtable::RowRange>]
312
+ # @return [Google::Bigtable::V2::RowSet]
313
+ #
314
+ def build_row_set row_keys, row_ranges
315
+ row_set = {}
316
+ row_set[:row_keys] = row_keys if row_keys
317
+
318
+ if row_ranges
319
+ row_ranges = [row_ranges] unless row_ranges.instance_of? Array
320
+ row_set[:row_ranges] = row_ranges.map(&:to_grpc)
321
+ end
322
+
323
+ Google::Bigtable::V2::RowSet.new row_set
324
+ end
325
+ end
326
+ end
327
+ end
328
+ end