README.md in dbx-api-0.1.1 vs README.md in dbx-api-0.2.0
- old
+ new
@@ -2,11 +2,14 @@
## Overview
This gem is designed to allow access to the DBX APIs (Jobs and SQL) from ruby applications.
## Installation
-TODO: write this section
+Add the following to your Gemfile to install
+```ruby
+gem 'dbx-api', '~>0.2.0'
+```
## Usage
Set up your .env file (optional)
```bash
# .env
@@ -23,19 +26,71 @@
sql_runner = DatabricksGateway.new
# If not using .env file...
sql_runner = DatabricksGateway.new(host: 'DBX_CONNECTION_STRING', token: 'DBX_ACCESS_TOKEN', warehouse: 'DBX_SQL_WAREHOUSE_ID')
# Basic sql
-result = sql_runner.run_sql("SELECT 1")
-sql_runner.parse_result(result)
+response = sql_runner.run_sql("SELECT 1")
+response.results
# => [{"1"=>"1"}]
# Dummy data in public DBX table
-result = sql_runner.run_sql("SELECT * FROM samples.nyctaxi.trips LIMIT 1")
-sql_runner.parse_result(result)
+response = sql_runner.run_sql("SELECT * FROM samples.nyctaxi.trips LIMIT 1")
+response.results
# => [{"tpep_pickup_datetime"=>"2016-02-14T16:52:13.000Z",
# "tpep_dropoff_datetime"=>"2016-02-14T17:16:04.000Z",
# "trip_distance"=>"4.94",
# "fare_amount"=>"19.0",
# "pickup_zip"=>"10282",
# "dropoff_zip"=>"10171"}]
-```
+```
+
+`run_sql` returns an object of type DatabricksSQLResponse.
+
+The response object has a few useful methods. For a complete list, see the class definition: `lib/dbx/databricks/sql_response.rb`
+```ruby
+response = sql_runner.run_sql("SELECT 1")
+
+# checking the status of a response
+response.status # => SUCCEEDED | FAILED | PENDING | RUNNING
+response.failed? # => Boolean
+response.success? # => Boolean
+
+# getting the results of a response
+response.results # => Array of Hashes
+
+# looking at the raw response
+response.raw_response # => HTTP object
+# or just the parsed body of the HTTP response
+response.body
+
+# checking error messages for failed responses
+response.error_message # => String
+```
+
+This gem does not make an inference to how error handling should occur. `run_sql` always returns an array, even if the query fails (it will return `[]` if status.failed?). Users may wish to check the status of the response before attempting to access the results. For example:
+```ruby
+require 'dbx'
+
+sql_runner = DatabricksGateway.new
+res = sql_runner.run_sql("SELECT 1")
+
+# do something with the results if the query succeeded
+return res.results if res.success?
+
+# do something else if the query failed
+puts "query failed: #{res.error_message}"
+```
+
+Since `run_sql` returns an instance of `DatabricksSQLResponse`, you can also chain methods together:
+```ruby
+sql_runner.run_sql("SELECT 1").results
+```
+
+## Development
+- After checking out the repo, run `bin/setup` to install dependencies.
+- Set up your `.env` file as described above.
+- Run `rake spec` to run the rspec tests.
+
+## Build
+- Run `gem build dbx.gemspec ` to build the gem.
+- Run `gem push dbx-api-0.2.0.gem` to push the gem to rubygems.org
+ - Requires logging in to rubygems.org first via `gem login`
\ No newline at end of file