Module: Loveseat::DesignDocument

Defined in:
lib/loveseat/design_document.rb,
lib/loveseat/design_document/dsl.rb,
lib/loveseat/design_document/support.rb,
lib/loveseat/design_document/view_row.rb

Defined Under Namespace

Classes: DSL, Support, ViewRow

Class Method Summary collapse

Class Method Details

.all(db) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/loveseat/design_document.rb', line 9

def self.all(db)
  resource = db._all_docs
  response, body = resource.get(:query => {:startkey => "_design/".to_json,
                                           :endkey => "_design/\ufff0".to_json,
                                           :include_docs => true})
  response.value

  body['rows'].map do |row|
    klass = Document.resolve(row['id'])
    support = Document.registry[klass]
    support.from_hash(row['doc'])
  end
end

.generate_id(klass) ⇒ Object



41
42
43
# File 'lib/loveseat/design_document.rb', line 41

def self.generate_id(klass)
  "_design/#{klass.name}"
end

.setup(klass, options = {}, &block) ⇒ Object



5
6
7
# File 'lib/loveseat/design_document.rb', line 5

def self.setup(klass, options = {}, &block)
  Document.setup(klass, { :support => Support.new(klass, options) }, &block)
end

.view(db, design_document, name, options = {}) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/loveseat/design_document.rb', line 23

def self.view(db, design_document, name, options = {})
  resource = Rest::DesignDocument.new(db, design_document.name)
  view_resource = resource._view(name)

  keys = options.delete(:keys)
  
  response, body = if keys
    view_resource.post(:query => options, :body => {:keys => keys}.to_json)
  else
    view_resource.get(:query => options)
  end
  response.value
  
  body['rows'].map do |row|
    ViewRow.from_hash(row)
  end
end