| Type: | Package | 
| Title: | A R Convenience Layer for CouchDB 2.0 | 
| Version: | 0.7.5 | 
| Date: | 2017-02-25 | 
| Author: | Thomas Bock | 
| URL: | https://github.com/wactbprot/R4CouchDB | 
| Maintainer: | Thomas Bock <thsteinbock@web.de> | 
| Description: | Provides a collection of functions for basic database and document management operations such as add, get, list access or delete. Every cdbFunction() gets and returns a list() containing the connection setup. Such a list can be generated by cdbIni(). | 
| License: | MIT + file LICENSE | 
| LazyLoad: | yes | 
| Depends: | R (≥ 2.7.0), bitops, RCurl (≥ 1.95), RJSONIO (≥ 1.3) | 
| Suggests: | roxygen2 (≥ 4.0), testthat (≥ 0.8) | 
| NeedsCompilation: | no | 
| Packaged: | 2017-03-01 11:56:58 UTC; bock04 | 
| Repository: | CRAN | 
| Date/Publication: | 2017-03-01 19:05:42 | 
Add attachments
Description
This function adds attachments to a database document that already exists.
Usage
cdbAddAttachment(cdb)
Arguments
| cdb | The list  | 
Details
The function uses the  RCurl- function
guessMIMEType() to do exactly this: guessing the mime type of
cdb$fileName.
If the switch cdb$attachmentsWithPath is set to TRUE
the attachment is saved with the path. This behavior is default
since version 0.2.5 of R4CouchDB
Value
| cdb | The result is stored in  | 
Author(s)
wactbprot
Examples
## Not run: 
ccc            <- cdbIni(DBName="r4couch_db")
ccc$dataList   <- list(normalDistRand =  rnorm(20))
ccc            <- cdbAddDoc(ccc)
# make a 3d plot (stolen from ?persp)
x              <- seq(-10, 10, length= 30)
y              <- x
f              <- function(x,y) {r <- sqrt(x^2+y^2); 10 * sin(r)/r }
z              <- outer(x, y, f)
z[is.na(z)]    <- 1
op             <- par(bg = "black")
ccc$fileName   <- "3dplot.pdf"
pdf(ccc$fileName)
persp(x, y, z,
      theta = 30,
      phi = 30,
      expand = 0.5,
      col = "lightblue")
dev.off()
# add the plot as attachment to the database
# it workes over  ccc$fileName
ccc            <- cdbAddAttachment(ccc)
## End(Not run)
Generates a new document
Description
This function adds a new document to an already existing database
Usage
cdbAddDoc(cdb)
Arguments
| cdb | The list  | 
Details
This function is called addDoc (which means add a new document). Therefore
the cdb$id is requested using cdbGetUuid() for every document
to add if no cdb$id is provided. If a cdb$id is provided the
function fails when a document with the given id already exists. In this
case one should use cdbUpdateDoc(). Since version v0.6 the function
writes the _rev and _id key to the top level of
cdb$dataList.
Value
| cdb | The couchdb response is stored in  | 
Author(s)
wactbprot
See Also
cdbGetDoc()
Examples
## Not run: 
ccc               <- cdbIni()
# I assume a database at localhost:5984 already exists
ccc$DBName        <- "r4couchdb_db"
ccc$dataList      <- list(normalDistRand =  rnorm(20))
ccc               <- cdbAddDoc(ccc)
## End(Not run)
This function adds multiple database documents with one request
Description
This is done via the _bulk_docs API provided by an already existing database.
Usage
cdbAddDocS(cdb)
Arguments
| cdb | 
 | 
Details
The _bulk_docs endpoint requires that cdb$dataList resolves
to an json array. This is reached with e.g.
cdb$dataList <- list(list(...),list(...),...).
Furthermore, _bulk_docs requires the documents to be wrapped in a key
named docs:[...]; this is done by cdbAddDocS() if
cdb$dataList is a list of lists. The user dont need to care.
At the moment the resulting _rev and  _id will be not
written back to the cdb$dataList. This means that a second
call of  cdbAddDocS() generates new Documents.
Value
| cdb | The couchdb response is stored in  | 
Author(s)
parisni, wactbprot
See Also
cdbAddDoc()
Examples
## Not run: 
ccc               <- cdbIni()
# I assume a database at localhost:5984 already exists
ccc$DBName        <- "r4couchdb_db"
docs <- list()
for(i in 1:10){
 docs[[i]] <- list(normalDistRand =  rnorm(20))
}
# docs is noe a list of 10 lists
ccc$dataList <- docs
# generating 10 database documents
cccAddDocS(ccc)$res
## End(Not run)
Deletes a document from a database
Description
With a given cdb$id this function sends a http "DELETE"
request to the url .../cdb$id?rev=cdb$rev.
Usage
cdbDeleteDoc(cdb)
Arguments
| cdb | Beside  | 
Value
| cdb | The result of the delete request is stored in
 | 
Author(s)
wactbprot
See Also
cdbAddDoc()
Request couchdb config
Description
Function provides access to the _config api end point.
Usage
cdbGetConfig(cdb)
Arguments
| cdb | Only the connection settings  | 
Value
| cdb | The result of the request is stored in  | 
Author(s)
wactbprot
See Also
cdbMakeDB
Examples
## Not run: 
cdbGetConfig(cdbIni())$res
## End(Not run)
Get a doc from CouchDB
Description
With a given cdb$id this function requests the document.
Usage
cdbGetDoc(cdb)
Arguments
| cdb | Beside  in cdb$errors | 
Value
| cdb | The result of the request is stored in  | 
Author(s)
wactbprot
See Also
cdbAddDoc()
Examples
## Not run: 
ccc               <- cdbIni()
ccc$newDBName     <- "r4couchdb_db"
ccc$dataList      <- list(normalDistRand =  rnorm(20))
ccc               <- cdbAddDoc(ccc)
cdbGetDoc(ccc)$res
## End(Not run)
Receive list results from CouchDB
Description
The function provides accesses to CouchDB lists.
Usage
cdbGetList(cdb)
Arguments
| cdb | Beside the connection details ( | 
Details
Query params e.g. "reduce=false" or "group_level=1" can be
provided in cdb$queryParam By now multible params must be given in
one string e.g.  "a=b&c=d&e=f".
Value
| cdb | The result of the request is stored in cdb$res after converting
the json answer into a list using  | 
Author(s)
wactbprot
Receive show results from CouchDB
Description
The function provides accesses to CouchDB shows.
Usage
cdbGetShow(cdb)
Arguments
| cdb | Beside the connection details ( | 
Details
Query params e.g. "format=json"  can be
provided in cdb$queryParam. Multible params must be given in
one string e.g.  "a=b&c=d&e=f".
Value
| cdb | The result of the request is stored in cdb$res after converting
the json answer into a list using  | 
Author(s)
wactbprot
Function for request one id
Description
Function returns a 128bit uuid requested from CouchDB
Usage
cdbGetUuid(cdb)
Arguments
| cdb | Only the connection settings  | 
Details
Simple CouchDB API end point to http://serverName:port/_uuids.
Value
| cdb | The result of the request is stored in  | 
Author(s)
wactbprot
See Also
cdbMakeDB
Examples
## Not run: 
cdbGetUuid(cdbIni())$res
## End(Not run)
Function for request some ids
Description
Function returns a 128bit uuid requested from CouchDB
Usage
cdbGetUuidS(cdb)
Arguments
| cdb | Only the connection settings  | 
Details
CouchDB API provides the url http://serverName:port/_uuids for those clients
who aren't able to create those ids. The number N
of ids received from a CouchDB can be set by cdb$count <- N
since version 0.6.  The function writes to cdb$res (in opposite to
cdbGetUuid() whitch writes to cdb$id)
Value
| cdb | The result of the request is stored in  | 
Author(s)
wactbprot
See Also
cdbMakeDB
Examples
## Not run: 
ccc            <- cdbIni()
ccc$count      <- 100
cdbGetUuidS(ccc)$res
## End(Not run)
Receive view results from CouchDB
Description
The function provides accesses to CouchDB views.
Usage
cdbGetView(cdb)
Arguments
| cdb | Beside the connection details ( | 
Details
Query params e.g. "reduce=false" or "group_level=1" can be
provided in cdb$queryParam
Value
| cdb | The result of the request is stored in cdb$res after converting the json answer into a list using fromJSON(). If a needed cdb list entry was not provided cdb$error says something about the R side | 
Note
For the moment only one cdb$queryParam is possible. In the
future maybe Duncans RJavaScript package can be used to generate
views without leaving R.
Author(s)
wactbprot
Ini function
Description
Function returns a list with some default settings and often used functions
such as cdb$baseUrl.
Usage
cdbIni(serverName="localhost",
port="5984",
prot = "http",
DBName="",
uname = "",
pwd = "",
newDBName = "",
removeDBName = "",
id  = "",
fileName = "",
design = "",
view = "",
list = "",
show = "",
queryParam = "",
encSub = "?",
count = 10,
dataList = list(),
attachmentsWithPath=TRUE,
digits = 7)
Arguments
| serverName | server name | 
| port | port | 
| prot | name of the protocol default is http | 
| DBName | name of database | 
| uname | name of the user | 
| pwd | password | 
| newDBName | name of the database for cdbMakeDB() | 
| removeDBName | name of the database to remove with cdbRemoveDB() | 
| id | the document id to get, put, post or delete | 
| fileName | for use in cdbAddAttachment | 
| design | the name of the design used when asking a view or list | 
| view | the name of a view to query | 
| list | the name of a list to query | 
| show | the name of a show to query | 
| queryParam | additional query params | 
| encSub | a character which is used as a replacement for chars who can not be converted by iconv | 
| count | how many uuids should be returned by cdbGetUuidS() | 
| dataList | a list containing data to post or update | 
| attachmentsWithPath | effects the result of the function cdbAddAttachment in the way the variable is named | 
| digits | digits kept at toJSON conversion | 
Details
The list:  cdb <- list(serverName = "localhost", ... ) is returned if
the packages library(RCurl) and library(RJSONIO) are
successfully loaded.
Value
| cdb | The R4CouchDB (method) chain(ing) list | 
Author(s)
wactbprot, parisni
Examples
## Not run: 
ccc <- cdbIni(digits=13,
              DBName="r4couch_db",
              attachmentsWithPath=FALSE,
              dataList=list(normalDistRand =  rnorm(20)))
## End(Not run)
Returns all databases on the server
Description
Gives a list of all databases available at cdb$serverName.
Usage
cdbListDB(cdb)
Arguments
| cdb | Only the connection settings  | 
Details
The function uses the _all_dbs  API end point .
Value
| cdb | The result of the request is stored in cdb$res after converting
the json answer into a list using  | 
Author(s)
wactbprot
See Also
cdbMakeDB
Examples
## Not run: 
cdbListDB(cdbIni())$res
## End(Not run)
Creates a new database
Description
The name of the new database is taken from cdb$newDBName.
Usage
cdbMakeDB(cdb)
Arguments
| cdb | The  | 
Details
The work is done by getURL() from Duncans RCurl package.
After creating the new database the function makes the shortcut
cdb$DBName <- cdb$newDBName so that further operations happen on the
new created database. Finaly cdb$newDBName <- "".
Value
| cdb | The CouchDB answer is stored in  | 
Note
The convention for database naming should be implemented.
Author(s)
wactbprot
See Also
cdbUpdateDoc
Examples
## Not run: 
ccc               <- cdbIni()
ccc$newDBName     <- "r4couchdb_db"
ccc               <- cdbMakeDB(ccc)
ccc$res
ccc$removeDBName  <- ccc$DBName
cdbRemoveDB(ccc)$res
## End(Not run)
Function to remove a database
Description
Removing a database means sending a http- "DELETE"- request to
http://cdb$serverName:cdb$port/ ...
Usage
cdbRemoveDB(cdb)
Arguments
| cdb | The  | 
Details
In cdb a entry cdb$delDBName should be provided for more
explicit deleting respectively more secure removing.
Value
| cdb | The CouchDB answer is stored in  | 
Author(s)
wactbprot
See Also
cdbMakeDB
Examples
## Not run: 
ccc               <- cdbIni()
ccc$newDBName     <- "r4couchdb_db"
ccc               <- cdbMakeDB(ccc)
ccc$res
ccc$removeDBName  <- ccc$DBName
cdbRemoveDB(ccc)$res
## End(Not run)
This function updates an existing doc
Description
This essentially means that a
revision, corresponding to the '_id' has to be provided. If no '_rev' is
given in the cdb list the function gets the doc from the db
and takes the rev number for the update
Usage
cdbUpdateDoc(cdb)
Arguments
| cdb | the cdb connection configuration list must contain the
 | 
Details
Updating a doc at couchdb means executing a http "PUT" request. The
cdb list must contain the cdb$serverName, cdb$port,
cdb$DBName, cdb$id. Since v0.6 the revision of the document
should exist at the intended place: cdb$dataList$'_rev'.
getURL() with customrequest = "PUT" does the work.  If a
needed cdb$ list entry is not provided cdb$error maybe says
something about the R side.
Value
| cdb | The response of the request is stored in  | 
Author(s)
wactbprot
See Also
cdbInit()
Examples
## Not run: 
ccc               <- cdbIni()
# I assume a database at localhost:5984 already exists
ccc$DBName        <- "r4couchdb_db"
ccc$dataList      <- list(normalDistRand =  rnorm(20))
ccc               <- cdbAddDoc(ccc)
ccc$dataList$Date <- date()
ccc               <- cdbUpdateDoc(ccc)
## End(Not run)