Class: RelaxDB::DesignDocument

Inherits:
Object
  • Object
show all
Defined in:
lib/relaxdb/design_doc.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client_class, data) ⇒ DesignDocument

Returns a new instance of DesignDocument.



5
6
7
8
# File 'lib/relaxdb/design_doc.rb', line 5

def initialize(client_class, data)
  @client_class = client_class
  @data = data
end

Class Method Details

.get(client_class) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/relaxdb/design_doc.rb', line 37

def self.get(client_class)
  begin
    database = RelaxDB.db
    resp = database.get("_design/#{client_class}")
    DesignDocument.new(client_class, JSON.parse(resp.body))
  rescue HTTP_404
    DesignDocument.new(client_class, {"_id" => "_design/#{client_class}"} )
  end
end

Instance Method Details

#add_map_view(view_name, function) ⇒ Object



10
11
12
# File 'lib/relaxdb/design_doc.rb', line 10

def add_map_view(view_name, function)
  add_view(view_name, "map", function)
end

#add_reduce_view(view_name, function) ⇒ Object



14
15
16
# File 'lib/relaxdb/design_doc.rb', line 14

def add_reduce_view(view_name, function)
  add_view(view_name, "reduce", function)
end

#add_validation_func(function) ⇒ Object



18
19
20
21
# File 'lib/relaxdb/design_doc.rb', line 18

def add_validation_func(function)
  @data["validate_doc_update"] = function
  self
end

#add_view(view_name, type, function) ⇒ Object



23
24
25
26
27
28
# File 'lib/relaxdb/design_doc.rb', line 23

def add_view(view_name, type, function)
  @data["views"] ||= {}
  @data["views"][view_name] ||= {}
  @data["views"][view_name][type] = function
  self            
end

#destroy!Object



47
48
49
50
51
# File 'lib/relaxdb/design_doc.rb', line 47

def destroy!
  # Implicitly prevent the object from being resaved by failing to update its revision
  RelaxDB.db.delete("#{@data["_id"]}?rev=#{@data["_rev"]}")
  self      
end

#saveObject



30
31
32
33
34
35
# File 'lib/relaxdb/design_doc.rb', line 30

def save
  database = RelaxDB.db    
  resp = database.put(@data["_id"], @data.to_json)
  @data["_rev"] = JSON.parse(resp.body)["rev"]
  self
end