rethinkdb_helper 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 01cd1baa0c8ff2bc88067c0ab507364320d6eef2
4
- data.tar.gz: 2c16cb84eb4de3331525b90c24afa511ad78104e
3
+ metadata.gz: 2c7050a7a77d22a393fcc4b88452ae20146867fc
4
+ data.tar.gz: 584a217453b2d1c644b206c1e7ffc6fb783edfe1
5
5
  SHA512:
6
- metadata.gz: 938adb9955c1787b7183d5984dcf0e9b7ce2d046b19f28cd40184443c4567dce929634d236f49b2e207f421dd5c108f840239ced866712bd1748375b7e79b564
7
- data.tar.gz: 9269ac2b91b32c96e794a58446afe2cdd319eb6f3629cdbf846c71ba87bc8e38f519c6e904d48532d8bf9e5c4c979a0d105700a21d392017612c6f659dbecc64
6
+ metadata.gz: 33f11b396b13dae5c7f366af664d8d6cb3c82323bb4cecca753b111a4726c2de6b9363d817c667d8ed1d0569eb97339fb03310b8ff519788a2b69dfca910b9aa
7
+ data.tar.gz: 76fc8386bf4c5460cbd53f00990b8b1bf67fca5ad5bb3d9e26b1cf5b4038aadfd92518625123622d58a66da3d14aceaf89ed299426f24b678281c7c037fede9e
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # RethinkdbHelper
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/rethinkdb_helper`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ My convention as a wrapper around the rethinkdb gem.
4
+ Under Development.
5
+ Don't use it.
6
6
 
7
7
  ## Installation
8
8
 
@@ -22,7 +22,20 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
- TODO: Write usage instructions here
25
+ ```ruby
26
+ db = RethinkdbHelper.new(
27
+ host: 'localhost', # default
28
+ port: 28015, # default
29
+ db: 'test', # default
30
+ table: 'test', # default
31
+ create_if_missing: true # created db/table if they are missing
32
+ )
33
+ db.insert(json_documents) # takes array of hashes or json
34
+ cursor = db.search(:field_name, field_value_regex)
35
+ puts cursor.count
36
+ cursor.each {|d| ap d}
37
+ etc.
38
+ ```
26
39
 
27
40
  ## Development
28
41
 
@@ -4,46 +4,64 @@
4
4
  ## Desc: Encapsulates some basic utility functions
5
5
  ## By: Dewayne VanHoozer (dvanhoozer@gmail.com)
6
6
  #
7
+ # TODO: Review the nobrainer gem to see if this stuff is moot
8
+ #
9
+
10
+ require 'forwardable'
11
+
7
12
  require 'rethinkdb'
8
13
 
9
14
  class RethinkdbHelper
10
15
  include RethinkDB::Shortcuts
16
+ extend Forwardable
11
17
 
12
18
  DEFAULTS = {
13
- host: ENV['RETHINKDB_HOST'] || 'localhost',
14
- port: (ENV['RETHINKDB_PORT'] || '28015').to_i,
15
- db: ENV['RETHINKDB_DB'] || 'test',
16
- table: ENV['RETHINKDB_TABLE'] || 'test',
19
+ host: ENV['RDB_HOST'] || 'localhost',
20
+ port: (ENV['RDB_PORT'] || '28015').to_i, # SMELL: is to_i necessary?
21
+ db: ENV['RDB_DB'] || 'test',
22
+ table: ENV['RDB_TABLE'] || 'test',
23
+ auth_key: ENV['RDB_AUTH_KEY'] || 'unknown',
17
24
  drop: false,
18
25
  create_if_missing: false
19
26
  }
20
27
 
28
+ # TODO: Pass some methods to r for fullfillment
29
+ # connect, db, table
30
+ #def_delegators :r, :connect, :db, :table
31
+
32
+ # TODO: Pass some methods to @commection for fulfillment
33
+ # close, reconnect, use, noreply_wait
34
+ def_delegators :@connection, :close, :reconnect, :use, :noreply_wait
35
+
36
+ # TODO: Pass some methods to @table for fulfillment
37
+ # filter, get, get_all, between, eq_join,
38
+ # inner_join, outer_join
39
+ def_delegators :@table, :filter, :get, :get_all, :between, :eq_join,
40
+ :inner_join, :outer_join
41
+
21
42
  # TODO: Limited to one table per instance, consider
22
43
  # support for multiple table per db support;
23
44
  # consider multiple db per instance support.
24
45
  def initialize(options={})
25
46
  @options = DEFAULTS.merge(options)
26
47
 
27
- @connection = r.connect(
28
- host: @options[:host],
29
- port: @options[:port]
30
- ).repl
48
+ @connection = connect
31
49
 
32
- r.db_drop(@options[:db]) if db_exist? && drop?
50
+ db_drop if db_exist? && drop?
33
51
 
34
52
  unless db_exist?
35
53
  if create_if_missing?
36
- r.db_create(@options[:db]).run
54
+ db_create
37
55
  else
38
56
  raise "db: '#{@options[:db]}' does not exist"
39
57
  end
40
58
  end
41
59
 
42
- @connection.use(@options[:db])
60
+ use(@options[:db])
43
61
 
44
62
  unless table_exist?
45
63
  if create_if_missing?
46
- r.table_create(@options[:table]).run
64
+ table_create
47
65
  else
48
66
  raise "table: '#{@options[:table]}' does not exist"
49
67
  end
@@ -52,14 +70,135 @@ class RethinkdbHelper
52
70
  @table = r.table(@options[:table])
53
71
  end # def initialize
54
72
 
55
- def db_exist?
56
- r.db_list.run.include?(@options[:db])
73
+ def table_wait(*options)
74
+ @table.wait(options).run
75
+ end
76
+
77
+ def table_status(table_name=@options[:table])
78
+ r.table_status(table_name).run
57
79
  end
58
80
 
59
- def table_exist?
60
- r.table_list.run.include?($options[:table])
81
+ def reconfigure(options={})
82
+ @taboe.reconfigure(options).run
83
+ end
84
+ alias :table_reconfigure :reconfigure
85
+
86
+ def rebalance
87
+ @table.rebalance.run
88
+ end
89
+ alias :table_rebalance :rebalance
90
+
91
+ def table_config
92
+ @table.config.run
93
+ end
94
+
95
+ def db_config
96
+ @db.config.run
97
+ end
98
+
99
+
100
+ def db_wait(*options)
101
+ @db.wait(options).run
61
102
  end
62
103
 
104
+ def server_wait(*options)
105
+ r.wait(options).run
106
+ end
107
+
108
+ def connect(options={host: @options[:host], port: @options[:port]})
109
+ r.connect(options).repl
110
+ end
111
+
112
+ def db_drop(db_name=@options[:db])
113
+ @db = nil
114
+ @table = nil
115
+ r.db_drop(db_name).run
116
+ end
117
+ alias :drop_db :db_drop
118
+ alias :db_delete :db_drop
119
+ alias :delete_db :db_drop
120
+
121
+ #def use(db_name=@options[:db])
122
+ # @connection.use(db_name)
123
+ #end
124
+
125
+ def db(db_name=@options[:db])
126
+ @db = r.db(db_name)
127
+ end
128
+
129
+ def table(table_name=@options[:table],options={})
130
+ @table = r.table(table_name, options)
131
+ end
132
+
133
+ def get_table(table_name=@options[:table], options)
134
+ r.table(table_name, options).run
135
+ end
136
+
137
+ def sync
138
+ @table.sync.run
139
+ end
140
+ alias :flush :sync
141
+
142
+
143
+ def table_create(table_name=@ooptions[:table], options={})
144
+ @table = r.table_create(table_name, options).run
145
+ end
146
+ alias :create_table :table_create
147
+
148
+ def table_drop(table_name=@options[:table])
149
+ @table = nil
150
+ @db.table_drop(table_name)
151
+ end
152
+ alias :drop_table :table_drop
153
+ alias :elete_table :table_drop
154
+ alias :table_delete :table_drop
155
+
156
+ def changes(options={})
157
+ @table.changes(options).run(connect)
158
+ end
159
+
160
+ def db_exist?(db_name=@options[:db])
161
+ db_list.include?(db_name)
162
+ end
163
+
164
+ def db_list
165
+ r.db_list.run
166
+ end
167
+ alias :list_db :db_list
168
+
169
+ def table_list
170
+ r.table_list.run
171
+ end
172
+ alias :list_table :table_list
173
+
174
+ def table_exist?(table_name=@options[:table])
175
+ table_list.include?(table_name)
176
+ end
177
+
178
+ def index_wait(*indexes)
179
+ @table.index_wait(indexes).run
180
+ end
181
+ alias :wait_on_index :index_wait
182
+ alias :wait_for_index :index_wait
183
+ alias :wait_index :index_wait
184
+
185
+ def index_create(index_name, index_function=nil, options={})
186
+ @table.index_create(index_name, index_funciton, options).run
187
+ end
188
+ alias :create_index :index_create
189
+
190
+ def index_list
191
+ @table.index_list.run
192
+ end
193
+ alias :list_indexes :index_list
194
+
195
+ def index_drop(index_name)
196
+ @table.index_drop(index_name).run
197
+ end
198
+ alias :drop_inde :index_drop
199
+ alias :delete_index :index_drop
200
+ alias :index_delete :index_drop
201
+
63
202
  def drop?
64
203
  @options[:drop]
65
204
  end
@@ -68,14 +207,34 @@ class RethinkdbHelper
68
207
  @options[:create_if_missing]
69
208
  end
70
209
 
210
+ def get_key(key)
211
+ @table.get(key).run
212
+ end
213
+
214
+ def get_all_keys(keys, options={})
215
+ @table.get_all([keys].flatten, options).run
216
+ end
217
+
218
+ def get_between_keys(lower_key, upper_key, options={})
219
+ @table.between(lower_key, upper_key, options).run
220
+ end
221
+ alias :between_keys :get_between_keys
222
+
223
+
224
+ def join(foreign_key, table_name,options={})
225
+ @table.eq_join(foreign_key,
226
+ r.table(table_name), options).without({:right => "id"}).zip().run
227
+ end
228
+
71
229
  # payloads is an array of hashes or a single
72
230
  # hash document.
73
- def insert(*payloads)
231
+ def insert(payloads, options={})
232
+ payloads = [payloads].flatten
74
233
  raise 'No document provided' if payloads.empty?
75
234
  invalid_payloads = false
76
235
  payloads.map{|doc| invalid_payloads &&= !doc.is_a?(Hash)}
77
236
  raise 'Invalid document: must be Hash' if invalid_payloads
78
- @table.insert(payloads).run
237
+ @table.insert(payloads.flatten, options).run
79
238
  end
80
239
  alias :add :insert
81
240
  alias :load :insert
@@ -88,7 +247,7 @@ class RethinkdbHelper
88
247
  #
89
248
  # params is a hash where the key is the symbolized field_name
90
249
  # and its value is the regex by which to filter
91
- def filter(params={})
250
+ def search(params={})
92
251
  raise 'No search terms' if params.empty?
93
252
  field_name = params.keys.first
94
253
  search_regex = params[field_name]
@@ -97,12 +256,11 @@ class RethinkdbHelper
97
256
  match(search_regex)}.
98
257
  run
99
258
  end
100
- alias :search :filter
101
259
 
102
- def close
103
- @connection.close
104
- end
260
+ #def close
261
+ # @connection.close
262
+ #end
105
263
 
106
264
  end # class RethinkdbHelper
107
265
 
108
- ReDBH = RethinkdbHelper unless defined?(ReDBH)
266
+ RDB = RethinkdbHelper unless defined?(RDB)
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "rethinkdb_helper"
7
- spec.version = '0.0.1'
7
+ spec.version = '0.0.2'
8
8
  spec.authors = ["Dewayne VanHoozer"]
9
9
  spec.email = ["dvanhoozer@gmail.com"]
10
10
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rethinkdb_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dewayne VanHoozer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-19 00:00:00.000000000 Z
11
+ date: 2015-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler