yipdw/analysand

View on GitHub
lib/analysand/writing.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'analysand/bulk_response'
require 'analysand/errors'
require 'analysand/response'

module Analysand
  module Writing
    def put(doc_id, doc, credentials = nil, options = {})
      query = options

      Response.new _put(doc_id, credentials, options, json_headers, doc.to_json)
    end

    def put!(doc_id, doc, credentials = nil, options = {})
      put(doc_id, doc, credentials, options).tap do |resp|
        raise ex(DocumentNotSaved, resp) unless resp.success?
      end
    end

    def ensure_full_commit(credentials = nil, options = {})
      Response.new _post('_ensure_full_commit', credentials, options, json_headers, {}.to_json)
    end

    def bulk_docs(docs, credentials = nil, options = {})
      body = { 'docs' => docs }
      body['all_or_nothing'] = true if options[:all_or_nothing]

      BulkResponse.new _post('_bulk_docs', credentials, {}, json_headers, body.to_json)
    end

    def bulk_docs!(docs, credentials = nil, options = {})
      bulk_docs(docs, credentials, options).tap do |resp|
        raise bulk_ex(BulkOperationFailed, resp) unless resp.success?
      end
    end

    def copy(source, destination, credentials = nil)
      headers = { 'Destination' => destination }

      Response.new _copy(source, credentials, {}, headers, nil)
    end

    def put_attachment(loc, io, credentials = nil, options = {})
      query = {}
      headers = {}

      if options[:rev]
        query['rev'] = options[:rev]
      end

      if options[:content_type]
        headers['Content-Type'] = options[:content_type]
      end

      Response.new _put(loc, credentials, query, headers, io.read)
    end

    def delete(doc_id, rev, credentials = nil)
      headers = { 'If-Match' => rev }

      Response.new _delete(doc_id, credentials, {}, headers, nil)
    end

    def delete!(doc_id, rev, credentials = nil)
      delete(doc_id, rev, credentials).tap do |resp|
        raise ex(DocumentNotDeleted, resp) unless resp.success?
      end
    end
  end
end

# vim:ts=2:sw=2:et:tw=78