class RethinkdbHelper
Constants
- DEFAULTS
Public Class Methods
new(options={})
click to toggle source
TODO: Limited to one table per instance, consider
support for multiple table per db support; consider multiple db per instance support.
# File lib/rethinkdb_helper.rb, line 41 def initialize(options={}) @options = DEFAULTS.merge(options) @connection = connect db_drop if db_exist? && drop? unless db_exist? if create_if_missing? db_create else raise "db: '#{@options[:db]}' does not exist" end end use(@options[:db]) unless table_exist? if create_if_missing? table_create else raise "table: '#{@options[:table]}' does not exist" end end @table = r.table(@options[:table]) end
Public Instance Methods
changes(options={})
click to toggle source
# File lib/rethinkdb_helper.rb, line 152 def changes(options={}) @table.changes(options).run(connect) end
connect(options={host: @options[:host], port: @options[:port]})
click to toggle source
# File lib/rethinkdb_helper.rb, line 104 def connect(options={host: @options[:host], port: @options[:port]}) r.connect(options).repl end
create_if_missing?()
click to toggle source
# File lib/rethinkdb_helper.rb, line 211 def create_if_missing? @options[:create_if_missing] end
create_simple_index(field_name)
click to toggle source
# File lib/rethinkdb_helper.rb, line 186 def create_simple_index(field_name) @table.index_create(field_name.to_s).run end
db(db_name=@options[:db])
click to toggle source
def use(db_name=@options)
@connection.use(db_name)
end
# File lib/rethinkdb_helper.rb, line 121 def db(db_name=@options[:db]) @db = r.db(db_name) end
db_config()
click to toggle source
# File lib/rethinkdb_helper.rb, line 91 def db_config @db.config.run end
db_create(db_name=@options[:db])
click to toggle source
# File lib/rethinkdb_helper.rb, line 160 def db_create(db_name=@options[:db]) @db = r.db_create(db_name).run end
Also aliased as: create_db
db_drop(db_name=@options[:db])
click to toggle source
# File lib/rethinkdb_helper.rb, line 108 def db_drop(db_name=@options[:db]) @db = nil @table = nil r.db_drop(db_name).run end
db_exist?(db_name=@options[:db])
click to toggle source
# File lib/rethinkdb_helper.rb, line 156 def db_exist?(db_name=@options[:db]) db_list.include?(db_name) end
db_list()
click to toggle source
# File lib/rethinkdb_helper.rb, line 165 def db_list r.db_list.run end
Also aliased as: list_db
db_wait(*options)
click to toggle source
# File lib/rethinkdb_helper.rb, line 96 def db_wait(*options) @db.wait(options).run end
drop?()
click to toggle source
# File lib/rethinkdb_helper.rb, line 207 def drop? @options[:drop] end
get_all_keys(keys, options={})
click to toggle source
# File lib/rethinkdb_helper.rb, line 219 def get_all_keys(keys, options={}) @table.get_all([keys].flatten, options).run end
get_between_keys(lower_key, upper_key, options={})
click to toggle source
# File lib/rethinkdb_helper.rb, line 223 def get_between_keys(lower_key, upper_key, options={}) @table.between(lower_key, upper_key, options).run end
Also aliased as: between_keys
get_key(key)
click to toggle source
# File lib/rethinkdb_helper.rb, line 215 def get_key(key) @table.get(key).run end
get_table(table_name=@options[:table], options)
click to toggle source
# File lib/rethinkdb_helper.rb, line 129 def get_table(table_name=@options[:table], options) r.table(table_name, options).run end
index_drop(index_name)
click to toggle source
# File lib/rethinkdb_helper.rb, line 195 def index_drop(index_name) @table.index_drop(index_name).run end
index_list()
click to toggle source
# File lib/rethinkdb_helper.rb, line 190 def index_list @table.index_list.run end
Also aliased as: list_indexes
index_wait(*indexes)
click to toggle source
# File lib/rethinkdb_helper.rb, line 179 def index_wait(*indexes) @table.index_wait(indexes).run end
insert(payloads, options={})
click to toggle source
payloads is an array of hashes or a single hash document.
# File lib/rethinkdb_helper.rb, line 236 def insert(payloads, options={}) payloads = [payloads].flatten raise 'No document provided' if payloads.empty? invalid_payloads = false payloads.map{|doc| invalid_payloads &&= !doc.is_a?(Hash)} raise 'Invalid document: must be Hash' if invalid_payloads @table.insert(payloads.flatten, options).run end
join(foreign_key, table_name,options={})
click to toggle source
# File lib/rethinkdb_helper.rb, line 229 def join(foreign_key, table_name,options={}) @table.eq_join(foreign_key, r.table(table_name), options).without({:right => "id"}).zip().run end
rebalance()
click to toggle source
# File lib/rethinkdb_helper.rb, line 82 def rebalance @table.rebalance.run end
Also aliased as: table_rebalance
reconfigure(options={})
click to toggle source
# File lib/rethinkdb_helper.rb, line 77 def reconfigure(options={}) @taboe.reconfigure(options).run end
Also aliased as: table_reconfigure
search(params={})
click to toggle source
TODO: Currently limited to one search field and regex
consider how to use more than one field
returns an enumerable cursor into the database for documents that match the search terms.
params is a hash where the key is the symbolized field_name and its value is the regex by which to filter
# File lib/rethinkdb_helper.rb, line 255 def search(params={}) raise 'No search terms' if params.empty? field_name = params.keys.first search_regex = params[field_name] @table.filter{|document| document[field_name]. match(search_regex)}. run end
server_wait(*options)
click to toggle source
# File lib/rethinkdb_helper.rb, line 100 def server_wait(*options) r.wait(options).run end
sync()
click to toggle source
# File lib/rethinkdb_helper.rb, line 133 def sync @table.sync.run end
Also aliased as: flush
table(table_name=@options[:table],options={})
click to toggle source
# File lib/rethinkdb_helper.rb, line 125 def table(table_name=@options[:table],options={}) @table = r.table(table_name, options) end
table_config()
click to toggle source
# File lib/rethinkdb_helper.rb, line 87 def table_config @table.config.run end
table_create(table_name=@options[:table], options={})
click to toggle source
# File lib/rethinkdb_helper.rb, line 139 def table_create(table_name=@options[:table], options={}) @table = r.table_create(table_name, options).run end
Also aliased as: create_table
table_drop(table_name=@options[:table])
click to toggle source
# File lib/rethinkdb_helper.rb, line 144 def table_drop(table_name=@options[:table]) @table = nil @db.table_drop(table_name) end
table_exist?(table_name=@options[:table])
click to toggle source
# File lib/rethinkdb_helper.rb, line 175 def table_exist?(table_name=@options[:table]) table_list.include?(table_name) end
table_list()
click to toggle source
# File lib/rethinkdb_helper.rb, line 170 def table_list r.table_list.run end
Also aliased as: list_table
table_status(table_name=@options[:table])
click to toggle source
# File lib/rethinkdb_helper.rb, line 73 def table_status(table_name=@options[:table]) r.table_status(table_name).run end
table_wait(*options)
click to toggle source
# File lib/rethinkdb_helper.rb, line 69 def table_wait(*options) @table.wait(options).run end