Module: Dolly::DocumentState

Includes:
ClassMethodsDelegation
Included in:
Document
Defined in:
lib/dolly/document_state.rb

Instance Method Summary collapse

Methods included from ClassMethodsDelegation

#connection, #database, #property_clean_doc

Instance Method Details

#after_save(response) ⇒ Object



61
62
63
64
# File 'lib/dolly/document_state.rb', line 61

def after_save(response)
  self.rev = response[:rev]
  response[:ok]
end

#destroy(is_hard = true) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/dolly/document_state.rb', line 28

def destroy is_hard = true
  return connection.delete(id, rev) if is_hard
  doc[:_deleted] = true
  save
rescue Dolly::ResourceNotFound
  nil
rescue Dolly::ServerError => error
  raise error unless error.message =~ /conflict/
  self.rev = self.class.safe_find(id)&.rev
  return unless self.rev
  destroy(is_hard)
end

#persisted?Boolean

Returns:

  • (Boolean)


48
49
50
51
# File 'lib/dolly/document_state.rb', line 48

def persisted?
  return false unless doc[:_rev]
  !doc[:_rev].empty?
end

#reloadObject



41
42
43
44
45
46
# File 'lib/dolly/document_state.rb', line 41

def reload
  reloaded_doc = self.class.find(id).send(:doc)
  attributes   = property_clean_doc(reloaded_doc)

  attributes.each(&update_attribute)
end

#save(options = {}) ⇒ Object



7
8
9
10
11
12
# File 'lib/dolly/document_state.rb', line 7

def save(options = {})
  return false unless options[:validate] == false || valid?
  set_type if typed? && type.nil?
  write_timestamps(persisted?)
  after_save(connection.put(id, doc))
end

#save!Object



14
15
16
17
# File 'lib/dolly/document_state.rb', line 14

def save!
  raise DocumentInvalidError unless valid?
  save
end

#to_hObject



53
54
55
# File 'lib/dolly/document_state.rb', line 53

def to_h
  doc
end

#update_properties(properties) ⇒ Object



19
20
21
# File 'lib/dolly/document_state.rb', line 19

def update_properties(properties)
  properties.each(&update_attribute)
end

#update_properties!(properties) ⇒ Object



23
24
25
26
# File 'lib/dolly/document_state.rb', line 23

def update_properties!(properties)
  update_properties(properties)
  save!
end

#valid?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/dolly/document_state.rb', line 57

def valid?
  true
end