Documentation ¶
Overview ¶
Package couchdb provides the powerful as well as convenient Tideland Go CouchDB Client as client for the CouchDB database.
A connection to the database or at least a server can be established by calling
cdb, err := couchdb.Open(cfg)
The expected configuration is
{etc {hostname <hostname||localhost>} {port <port||5984>} {database <database||default>} {debug-logging <true/false||false>} }
If any of the values isn't defined the default values above are taken. Instead of splitting a larger configuration it's also possible to use
cdb, err := couchdb.OpenPath(cfg, "path/to/couchdb/config")
In case of not using the etc configuration package there's the little helper to create a configuration by calling
cfg := couchdb.Configure(hostname, port, database)
The supported operations are the listing, creation, and deleting of databases, the listing of all design documents and data documents, and the creation, reading, updating, and deleting of documents.
Index ¶
Constants ¶
const ( ErrNoConfiguration = iota + 1 ErrInvalidVersion ErrInvalidDocument ErrNoIdentifier ErrNotFound ErrMarshallingDoc ErrPreparingRequest ErrPerformingRequest ErrClientRequest ErrUnmarshallingDoc ErrUnmarshallingField ErrReadingResponseBody )
Error codes.
const ( StatusOK = http.StatusOK StatusCreated = http.StatusCreated StatusAccepted = http.StatusAccepted StatusFound = http.StatusFound StatusBadRequest = http.StatusBadRequest StatusForbidden = http.StatusForbidden StatusNotFound = http.StatusNotFound StatusMethodNotAllowed = http.StatusMethodNotAllowed StatusNotAcceptable = http.StatusNotAcceptable StatusConflict = http.StatusConflict StatusPreconditionFailed = http.StatusPreconditionFailed StatusTooManyRequests = http.StatusTooManyRequests StatusInternalServerError = http.StatusInternalServerError )
Status codes after database requests.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type CouchDB ¶
type CouchDB interface { // Path creates a document path starting at root. Path(parts ...string) string // DatabasePath creates a document path for the database. DatabasePath(parts ...string) string // Head performs a GET request against the configured database. Head(path string, doc interface{}, params ...Parameter) ResultSet // Get performs a GET request against the configured database. Get(path string, doc interface{}, params ...Parameter) ResultSet // Put performs a GET request against the configured database. Put(path string, doc interface{}, params ...Parameter) ResultSet // Post performs a GET request against the configured database. Post(path string, doc interface{}, params ...Parameter) ResultSet // Delete performs a GET request against the configured database. Delete(path string, doc interface{}, params ...Parameter) ResultSet // GetOrPost decides based on the document if it will perform // a GET request or a POST request. The document can be set directly // or by one of the parameters. Several of the CouchDB commands // work this way. GetOrPost(path string, doc interface{}, params ...Parameter) ResultSet // Version returns the version number of the database instance. Version() (version.Version, error) // AllDatabases returns a list of all database IDs // of the connected server. AllDatabases() ([]string, error) // HasDatabase checks if the configured database exists. HasDatabase() (bool, error) // CreateDatabase creates the configured database. CreateDatabase(params ...Parameter) ResultSet // DeleteDatabase removes the configured database. DeleteDatabase(params ...Parameter) ResultSet // AllDesigns returns the list of all design // document IDs of the configured database. AllDesigns() ([]string, error) // Design returns the design document instance for // the given ID. Design(id string) (Design, error) // AllDocuments returns a list of all document IDs // of the configured database. AllDocuments() ([]string, error) // HasDocument checks if the document with the ID exists. HasDocument(id string) (bool, error) // CreateDocument creates a new document. CreateDocument(doc interface{}, params ...Parameter) ResultSet // ReadDocument reads an existing document. ReadDocument(id string, params ...Parameter) ResultSet // UpdateDocument update an existing document. UpdateDocument(doc interface{}, params ...Parameter) ResultSet // DeleteDocument deletes an existing document. DeleteDocument(doc interface{}, params ...Parameter) ResultSet // DeleteDocumentByID deletes an existing document simply by // its identifier and revision. DeleteDocumentByID(id, revision string, params ...Parameter) ResultSet // BulkWriteDocuments allows to create or update many // documents en bloc. BulkWriteDocuments(docs []interface{}, params ...Parameter) (Statuses, error) }
CouchDB provides the access to a database.
func Open ¶
Open returns a configured connection to a CouchDB server. Permanent parameters, e.g. for authentication, are possible.
type Design ¶
type Design interface { // ID returns the ID of the design. ID() string // Language returns the language for views and shows. Language() string // Language sets the language for views and shows. SetLanguage(language string) // View returns the map and the reduce functions of the // view with the ID, otherwise false. View(id string) (string, string, bool) // SetView sets the map and the reduce functions of the // view with the ID. SetView(id, mapf, reducef string) // Show returns the show function with the ID, otherwise false. Show(id string) (string, bool) // SetShow sets the show function with the ID. SetShow(id, showf string) // Write creates a new design document or updates an // existing one. Write(rps ...Parameter) ResultSet // Delete a design document. Delete(rps ...Parameter) ResultSet }
Design provides convenient access to a design document.
type Parameter ¶
type Parameter func(pa Parameterizable)
Parameter is a function changing one (or if needed multile) parameter.
type Parameterizable ¶
type Parameterizable interface { // SetQuery sets a query parameter. SetQuery(key, value string) // AddQuery adds a query parameter to an existing one. AddQuery(key, value string) // SetHeader sets a header parameter. SetHeader(key, value string) // UpdateDocument allows to modify or exchange the document. UpdateDocument(update func(interface{}) interface{}) }
Parameterizable defines the methods needed to apply the parameters.
type ResultSet ¶
type ResultSet interface { // IsOK checks the status code if the result is okay. IsOK() bool // StatusCode returns the status code of the request. StatusCode() int // Error returns a possible error of a request. Error() error // ID returns a potentially returned document identifier. ID() string // Revision returns a potentially returned document revision. Revision() string // IsDeleted returns true if a returned document is already deleted. IsDeleted() bool // Document returns the received document of a client // request and unmorshals it. Document(value interface{}) error // Raw returns the received raw data of a client request. Raw() ([]byte, error) // Header provides access to header variables. Header(key string) string }
ResultSet contains the server result set.
type Status ¶
type Status struct { OK bool `json:"ok"` ID string `json:"id"` Revision string `json:"rev"` Error string `json:"error"` Reason string `json:"reason"` }
Status contains internal status information CouchDB returns.
type Statuses ¶
type Statuses []Status
Statuses is the list of status information after a bulk writing.
type Unmarshable ¶
type Unmarshable interface { // String returns the original as string. String() string // Raw returns the unmarshable as raw byte slice. Raw() []byte // Unmarshal unmarshals the interface into the // passed variable. Unmarshal(doc interface{}) error }
Unmarshable describes a not yet unmarshalled value that can be unmarshalled into a given variable. It is used to access key, value, or document of view result rows.
func NewUnmarshableJSON ¶
func NewUnmarshableJSON(msg json.RawMessage) Unmarshable
NewUnmarshableJSON creates a new Unmarshable out of a json.RawMessage
func NewUnmarshableRaw ¶
func NewUnmarshableRaw(raw []byte) Unmarshable
NewUnmarshableRaw creates a new Unmarshable out of the raw bytes.