Class: DDP::Server::RethinkDB::API

Inherits:
Object
  • Object
show all
Defined in:
lib/ddp/server/rethinkdb/api.rb

Overview

Helper class that users can extend to implement an API that can be passed as the RPC API parameter to the RethinkDB DDP protocol

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ API

Returns a new instance of API.



10
11
12
13
14
15
16
17
# File 'lib/ddp/server/rethinkdb/api.rb', line 10

def initialize(config)
	@config = config
	@database_name = config[:database]

	setup_connection_pool
	setup_rpc
	setup_collections
end

Instance Attribute Details

#database_nameObject

Returns the value of attribute database_name.



8
9
10
# File 'lib/ddp/server/rethinkdb/api.rb', line 8

def database_name
  @database_name
end

Instance Method Details

#collection_query(name, *params) ⇒ Object



24
25
26
27
# File 'lib/ddp/server/rethinkdb/api.rb', line 24

def collection_query(name, *params)
	raise 'No such collection' unless @collections.include? name
	wrap_query send(name, *params)
end

#databaseObject



29
30
31
# File 'lib/ddp/server/rethinkdb/api.rb', line 29

def database
	::RethinkDB::RQL.new.db(@database_name)
end

#invoke_rpc(method, *params) ⇒ Object



19
20
21
22
# File 'lib/ddp/server/rethinkdb/api.rb', line 19

def invoke_rpc(method, *params)
	raise 'No such method' unless @rpc_methods.include? method
	send(method, *params)
end

#new_connectionObject



43
44
45
46
47
48
# File 'lib/ddp/server/rethinkdb/api.rb', line 43

def new_connection
	::RethinkDB::Connection.new(
		host: @config[:host],
		port: @config[:port]
	)
end

#table(name) ⇒ Object



33
34
35
# File 'lib/ddp/server/rethinkdb/api.rb', line 33

def table(name)
	database.table(name)
end

#with_connectionObject



37
38
39
40
41
# File 'lib/ddp/server/rethinkdb/api.rb', line 37

def with_connection
	@connection_pool.with do |conn|
		yield conn
	end
end