Class: Datomic::Client
- Inherits:
-
Object
- Object
- Datomic::Client
- Defined in:
- lib/datomic/client.rb,
lib/datomic/client/version.rb,
lib/datomic/client/response.rb
Defined Under Namespace
Classes: Response
Constant Summary collapse
- HANDLE_RESPONSE =
lambda do |body, request, response| Response.new body, response, request end
- VERSION =
'0.3.0'
Instance Method Summary collapse
- #create_database(dbname) ⇒ Object
-
#database_info(dbname, options = {}) ⇒ Object
Options: * :t - Specifies version/time of db.
-
#datoms(dbname, params = {}) ⇒ Object
This endpoint hits both datoms and index-range APIs.
-
#entity(dbname, id, params = {}) ⇒ Object
params take any param in addition to following options:.
-
#events(dbname, &block) ⇒ Object
Streams events.
-
#initialize(url, storage = nil) ⇒ Client
constructor
A new instance of Client.
-
#query(dbname, query, params = {}) ⇒ Object
Query can be a ruby data structure or a string representing clojure data.
-
#transact(dbname, data) ⇒ Object
Data can be a ruby data structure or a string representing clojure data.
Constructor Details
#initialize(url, storage = nil) ⇒ Client
Returns a new instance of Client.
13 14 15 16 |
# File 'lib/datomic/client.rb', line 13 def initialize(url, storage = nil) @url = url @storage = storage end |
Instance Method Details
#create_database(dbname) ⇒ Object
18 19 20 21 |
# File 'lib/datomic/client.rb', line 18 def create_database(dbname) RestClient.post root_url('data', @storage) + "/", {"db-name" => dbname}, :content_type => 'application/x-www-form-urlencoded', &HANDLE_RESPONSE end |
#database_info(dbname, options = {}) ⇒ Object
Options:
-
:t - Specifies version/time of db. Defaults to latest version
25 26 27 28 |
# File 'lib/datomic/client.rb', line 25 def database_info(dbname, = {}) version = .fetch(:t, '-') get db_url(dbname, version) + "/", :Accept => 'application/edn' end |
#datoms(dbname, params = {}) ⇒ Object
This endpoint hits both datoms and index-range APIs. params take any param in addition to following options:
Options:
-
:t - Specifies version/time of db. Defaults to latest version
42 43 44 45 |
# File 'lib/datomic/client.rb', line 42 def datoms(dbname, params = {}) version = params.fetch(:t, '-') get db_url(dbname, version, "datoms"), params end |
#entity(dbname, id, params = {}) ⇒ Object
params take any param in addition to following options:
Options:
-
:t - Specifies version/time of db. Defaults to latest version
51 52 53 54 |
# File 'lib/datomic/client.rb', line 51 def entity(dbname, id, params = {}) version = params.fetch(:t, '-') get db_url(dbname, version, 'entity'), params.merge(:e => id) end |
#events(dbname, &block) ⇒ Object
Streams events. For each event, given block is called with Net::HTTP response from event
65 66 67 68 69 70 71 |
# File 'lib/datomic/client.rb', line 65 def events(dbname, &block) # can't use RestClient.get b/c of :block_response RestClient::Request.execute(:method => :get, :url => root_url('events', @storage, dbname), :headers => {:accept => "text/event-stream"}, :block_response => block, &HANDLE_RESPONSE) end |
#query(dbname, query, params = {}) ⇒ Object
Query can be a ruby data structure or a string representing clojure data
57 58 59 60 61 |
# File 'lib/datomic/client.rb', line 57 def query(dbname, query, params = {}) query = transmute_data(query) args = [{:"db/alias" => [@storage, dbname].join('/')}].to_edn get root_url("api/query"), params.merge(:q => query, :args => args) end |
#transact(dbname, data) ⇒ Object
Data can be a ruby data structure or a string representing clojure data
31 32 33 34 35 |
# File 'lib/datomic/client.rb', line 31 def transact(dbname, data) data = transmute_data(data) RestClient.post(db_url(dbname) + "/", {"tx-data" => data}, :Accept => 'application/edn', &HANDLE_RESPONSE) end |