README.md
# opal-pouchdb: A PouchDB Wrapper for Opal
[![Build Status](https://travis-ci.org/dodecaphonic/opal-pouchdb.svg?branch=master)](https://travis-ci.org/dodecaphonic/opal-pouchdb)
[![Code Climate](https://codeclimate.com/github/dodecaphonic/opal-pouchdb/badges/gpa.svg)](https://codeclimate.com/github/dodecaphonic/opal-pouchdb)
opal-pouchdb allows [PouchDB][pouchdb] databases to be used with a nice Ruby API.
## Usage
Basic usage follows [PouchDB's API][pouchdb-api] very closely. The major difference is that, in JavaScript, a developer may decide if she wishes get the results of her interactions with the database via callbacks or promises. In opal-pouchdb, everything returns an [Opal Promise][opal-promise], allowing your async code to be as composable as that abstraction allows.
``` ruby
db = PouchDB::Database.new("my_database")
db.put(_id: "doc-1", summary: "Awesome", text: "Cake").then
db.get("doc-1")
end.then do |db_record|
puts db_record # => { "_id" => "doc-1", "_rev" => "some-large-string", "summary" => "Awesome", "text" => "Cake" }
end
```
Every single CRUD operation is supported right now:
- put
- post
- get
- delete
- all_docs
- bulk_docs
## TODO
- Attachments
- Querying
- Plugins
- Debug mode
[pouchdb]: http://pouchdb.com
[pouchdb-api]: http://pouchdb.com/api.html
[opal-promise]: http://opalrb.org/docs/promises/